-1

这个现有查询成功地为我提供了在上个月至少登录一次我们的应用程序的所有用户......

SELECT DISTINCT Id, AppName
FROM "macanta_user_track_records"
WHERE "LoginDate" >= '2018-04-01' AND "LoginDate" <= '2018-04-30' ORDER BY AppName

我该如何调整它,以便它只为当月有超过 5 个用户登录的应用程序返回不同的行?

例如,如果当前查询返回...

Id      AppName
52983   wb439
64671   wg117
19879   wg117
66955   wk350
77045   ws230
54643   ws230
79669   ws230
77043   ws230
77639   ws230
77737   ws230
11404   xf417

修改后的查询只会返回......

Id      AppName
77045   ws230
54643   ws230
79669   ws230
77043   ws230
77639   ws230
77737   ws230
4

2 回答 2

0

尝试这个

SELECT DISTINCT Id, AppName
FROM "macanta_user_track_records" as a
JOIN (
 SELECT AppName
   FROM "macanta_user_track_records"
   WHERE "LoginDate" >= '2018-04-01' AND "LoginDate" <= '2018-04-30' // To reduce number of rows,otherwise WHERE is not necessary
  GROUP BY AppName
  HAVING count(AppName) >= 5    
) as b ON b.AppName = a.AppName
WHERE "LoginDate" >= '2018-04-01' AND "LoginDate" <= '2018-04-30' 
ORDER BY AppName
于 2018-05-23T04:45:25.530 回答
-1

这将完成这项工作

SELECT DISTINCT x.Id, x.AppName, x.Type, x.FirstName, x.LastName, x.Email
FROM macanta_user_track_records as x 
JOIN (SELECT b.* FROM (SELECT DISTINCT c.Id, c.AppName
 FROM macanta_user_track_records as c
 WHERE c.LoginDate >= '2018-04-01' AND c.LoginDate <= '2018-04-30' 
 ORDER BY c.AppName) as b
 GROUP BY b.AppName
 HAVING count(AppName) > 5) as a 
 ON a.AppName = x.AppName
WHERE x.LoginDate >= '2018-04-01' AND x.LoginDate <= '2018-04-30' 
ORDER BY x.AppName
于 2018-05-23T05:58:04.197 回答