SELECT state,count(*) as regular
FROM X
group by state
这给出了像
这样的结果AL 10
AK 20
AZ 25
SELECT state,count(*) as regular
FROM X
where alcohol_use=TRUE
group by state
这给出了像
这样的结果AL 5
AK 10
AZ 20
我需要一个查询百分比的单个查询,并为我提供类似
的输出AL 50%
AK 50%
AZ 80%
提前致谢
答案 0 :(得分:2)
SELECT state,
SUM(alcohol_use=TRUE) / COUNT(*) * 100
FROM X
GROUP BY state
SUM(alcohol_use=TRUE)
表达式会将alcohol_use=TRUE
的值加起来true
或false
,然后将其隐式投放到1
或0
相应
答案 1 :(得分:0)
实现这种“部分计数”的一种方法是将case
表达式与您的条件相加。 E.g:
SELECT state,
SUM (CASE alcohol_use WHEN TRUE THEN 1 ELSE 0 END) / COUNT(*) as percent
FROM x
GROUP BY state