Редактировал(а) Alexandr Fokin 2023/12/16 14:12

Скрыть последних авторов
Alexandr Fokin 2.1 1 {{code language="sql"}}
2
Alexandr Fokin 3.1 3 SELECT
Alexandr Fokin 2.1 4 person_id
5 FROM MyTable
6 GROUP BY person_id
7 HAVING 3 = (
8 MAX(CASE pet WHEN 'dog' THEN 1 ELSE 0 END)
9 + MAX(CASE pet WHEN 'cat' THEN 1 ELSE 0 END)
10 + MAX(CASE pet WHEN 'tiger ' THEN 1 ELSE 0 END)
11 )
12
13 {{/code}}
Alexandr Fokin 3.10 14
15 ----
16
17 С помощью CASE-WHEN и MAX можно выбрать только те группы, в которых есть указанное значение(я). (Хотя бы один раз)
18
19 Group by having at least one of each item
20 https://stackoverflow.com/questions/32122777/group-by-having-at-least-one-of-each-item