У меня есть таблица для ввода пользователем вопросов. Им был предоставлен вариант дать до пяти ответов на один и тот же вопрос, поэтому у вас есть 5 полей с пятью различными ответами по одному и тому же вопросу.Выберите количество одинаковых значений в нескольких столбцах
Так field1, filed2, field3, Field4, Field5 все могли бы получить ответ «Foo»
Я хочу создать запрос, который будет возвращать счетчик числа от общего числа ответов в любом из пяти столбцов для всех пользователей для каждого возможного ответа.
Так что результат будет:
«Foo» 22 «Мне нравится торт» 32 «который заботится» 2
Я нахожусь на правильном пути со следующим, но я подозреваю, является более элегантным решением. Вот что я до сих пор:
SELECT field1,filed2,field3,field4,field5,
(sum(CASE WHEN field1='foo' THEN 1 ELSE 0 END) +
sum(CASE WHEN field2='foo' THEN 1 ELSE 0 END)) +
sum(CASE WHEN field3='foo' THEN 1 ELSE 0 END)) +
sum(CASE WHEN field4='foo' THEN 1 ELSE 0 END)) +
sum(CASE WHEN field5='foo' THEN 1 ELSE 0 END)) AS count
FROM items
GROUP BY field1,filed2,field3,field4,field5
;
Любые предложения были бы оценены.
Если вы получите желаемый результат, этот запрос будет в порядке! – jarlh
Есть ли способ сделать это, не указав значение поиска? В моем примере он ограничен «foo». Если бы я мог избавиться от «foo», и он выводит строку для каждого отдельного значения со счетом, то он будет более чистым. – kgrondell
Добавьте некоторые данные таблицы образцов и ожидаемый результат. (Также форматированный текст.) – jarlh