如何形成这个SQL查询?

时间:2014-04-03 02:33:08

标签: mysql sql

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%

提前致谢

2 个答案:

答案 0 :(得分:2)

  SELECT state,
         SUM(alcohol_use=TRUE) / COUNT(*) * 100
    FROM X
GROUP BY state

SUM(alcohol_use=TRUE)表达式会将alcohol_use=TRUE的值加起来truefalse,然后将其隐式投放到10相应

答案 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