Как вернуть только отдельные строки из таблицы SQLite, которые соответствуют определенным критериям «группы» одного столбца? - PullRequest
0 голосов
/ 23 мая 2018

Этот существующий запрос успешно дает мне всех пользователей, которые вошли в наше приложение хотя бы один раз за предыдущий месяц ...

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Это сделает работу

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
0 голосов
/ 23 мая 2018

Попробуйте это

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...