Подсчитайте количество строк, в которых есть по крайней мере два положительных ответа в диапазоне нескольких столбцов

#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