我有一张名为“问卷”的表格,其结构如下:
user_id | Q01 | Q02 | Q03 | 00001 | Yes | Yes | Yes | 00002 | Yes | No | Yes | 00003 | Yes | No | No |
我正在弄清楚如何计算每个用户(user_id)的“是”的数量。例如:
00001 - 3 00002 - 2 00003 - 1
我只想显示没有UserID的结果..
在此之前,我已将Yes和No存储为“1”和“0”,因此我可以使用以下内容:
SELECT CONCAT(Q01+Q02+Q03) FROM `#__table` WHERE `id` = '[user_id]'
我似乎无法找到正确的查询,因为它不再是整数..
答案 0 :(得分:1)
SELECT (Q01 = 'Yes') + (Q02 = 'Yes') + (Q03 = 'Yes')
FROM #__table
WHERE id = '[user_id]'
答案 1 :(得分:0)
SELECT if(Q01 = 'Yes',1,0) + if(Q02 = 'Yes',1,0) + if(Q03 = 'Yes',1,0)
FROM #__table
WHERE id = '[user_id]'
答案 2 :(得分:0)
SELECT sum(yes)
FROM (
(SELECT count(*) yes
FROM #__TABLE
WHERE Q01='yes'
OR Q02='yes'
OR Q03='yes'
AND user_id=00001)
UNION ALL
(SELECT count(*) yes
FROM #__TABLE
WHERE Q01='yes'
OR Q02='yes'
OR Q03='yes'
AND user_id=00002)
UNION ALL
(SELECT count(*) yes
FROM #__TABLE
WHERE Q01='yes'
OR Q02='yes'
OR Q03='yes'
AND user_id=00003)) AS tt;
我认为这样可以正常工作。