Mysql: считать и возвращать сгруппированные записи, которые не превышают определенную сумму - PullRequest
0 голосов
/ 30 апреля 2020

Предположим, следующая таблица attendees:

+----+------------+-------+
| id | var1       | var2  |
+----+------------+-------+
| 1  | 2020-05-08 | 9:00  |
+----+------------+-------+
| 2  | 2020-05-08 | 10:00 |
+----+------------+-------+
| 3  | 2020-05-07 | 11:00 |
+----+------------+-------+
| 4  | 2020-05-09 | 9:00  |
+----+------------+-------+

Мне нужно посчитать значения повторяющихся var1 и вернуть только строки этих значений, ЕСЛИ количество повторных var1 не превышает 5. В приведенном выше примере мне нужно Ids 1 и 2.

Это не сработало:

mysql --> SELECT *, COUNT(*) FROM attendees GROUP BY var1 WHERE COUNT(*) < 5;

Ответы [ 3 ]

1 голос
/ 30 апреля 2020

Этот запрос:

select var1
from attendees
group by var1 
having count(*) between 2 and 5

возвращает все var1, которые вы хотите. Требование не превышает 5 означает, что оно не может быть больше 5, но может быть равно 5, верно? Используйте это так:

select * from attendees
where var1 in (
  select var1
  from attendees
  group by var1 
  having count(*) between 2 and 5
)
1 голос
/ 30 апреля 2020

Попробуйте следующее. вот демо 1002 *.

select
    id
from
(select
    id,
    count(*) over (partition by var1) as total
from attendees
) t
where total < 5
and total > 1

Вывод:

*--*
|id|
*--*
| 1| 
| 2|
*--*
0 голосов
/ 30 апреля 2020

SELECT *, COUNT (var2) ОТ участников ГРУППА ПО var1 WHERE COUNT (var2) <5; </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...