#mysql
Вопрос:
У меня есть база данных примеров. Как подсчитать количество строк, в которых есть по крайней мере два положительных ответа в диапазоне a1a-a1d? 1-положительный, 2 — отрицательный
Комментарии:
1. какой sql вы используете ?
2. Я использую mysql
3. работает ли для вас приведенное ниже решение ?
Ответ №1:
MySQL обрабатывает логические значения как целые числа, поэтому вы можете использовать:
select t.*,
(a1a > 0) (a1b > 0) (a1c > 0) (a1d > 0) as num_positive
from t;
Для подсчета переместите это в where
предложение:
select count(*)
from t
where ( (a1a > 0) (a1b > 0) (a1c > 0) (a1d > 0) ) > 2;
Примечание: Ваши данные содержат значения только для 1
и 2
. Вы можете использовать любой порог, который вам нравится.
Ответ №2:
select
id,
count (case
when (
(a1a > 0 and a1b > 0) or (a1a > 0 and a1c > 0)
or (a1a > 0 and a1d > 0) or (a1b > 0 and a1c > 0)
or (a1b > 0 and a1d > 0) or (a1c > 0 and a1d > 0)
)
then 1 else 0 end as total
from [table name]
group by 1