我有一个调查答案表,例如:
date | q1 | q2 |
12/12/10 | yes | no |
12/13/10 | no | no |
我想创建一个查询来获取该表的结果摘要,从而允许我设置相关的日期范围。
我下面的声明几乎有效:
SELECT ( SELECT Count(*)
FROM `survey`
WHERE q1='Yes') AS q1_yes,
( SELECT Count(*)
FROM `survey`
WHERE q1='No') AS q1_no,
( SELECT Count(*)
FROM `survey`
WHERE q2='Yes') AS q2_yes)
但我不确定是否可以做得更好,以及在哪里添加日期范围过滤。
你可以使用:
select q1, q2, count(*)
from survey
group by q1, q2
或者,如果您想获得完全相同的结果:
select count(case when q1 = 'Yes' then q1 else null end) as q1_yes,
count(case when q1 = 'No' then q1 else null end) as q1_no,
count(case when q2 = 'Yes' then q2 else null end) as q2_yes
from survey
您对“case”的实现可能会有所不同,重要的是您可以将您不想为空的所有内容设置为空,并且它不会被 count() 计数:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)