Как выбрать записи с базы где в полях значение 0 не больше n-ого числа?
mysql 5.7
Структура таблицы:
id, c1, c2, c3, c4, c5, c6, c7, sts
id - идентификатор
с1,... - поля tinyint, значения от 0 до 2
sts - статус, значения 0 или 1, активен и неактивен
пример записи
1, 1, 0, 0, 2, 1, 1, 1, 0
2, 1, 0, 0, 2, 1, 1, 1, 0
3, 0, 0, 0, 1, 1, 1, 1, 0
4, 0, 0, 0, 0, 1, 1, 1, 0
......
Как выбрать записи с базы где в полях С1,..С7 значение 0 не повторяется больше например 3 раз и значение 1 не повторяется больше 4 раз?
SELECT
id
FROM t, jsonb_each_text(to_jsonb(t)) as x("key",val)
group by id
having
count(*) filter(where val::int = 0) <=3 and
count(*) filter(where val::int = 1) <=4;