在SQL中计算多个值

时间:2013-07-15 13:08:21

标签: mysql sql

我有一张桌子,想要计算值的外观(没有总和)

ID  status
============
1   2
2   3
3   1
4   1
5   1
6   2

我需要以下结果:

status_1 status_2 status_3 status_4
===================================
3        2        1        0

我可以使用单个SQL语句执行此操作吗?

6 个答案:

答案 0 :(得分:2)

select
sum(if(status=1,1,0)) as status_1,
sum(if(status=2,1,0)) as status_2,
sum(if(status=3,1,0)) as status_3,
sum(if(status=4,1,0)) as status_4
from foo

答案 1 :(得分:0)

使用带有计数功能的组查询:

select status, count(status)
from tablename
group by status

答案 2 :(得分:0)

Select 
   sum(case status When 1 Then 1 End) status1,
   sum(case status When 2 Then 1 End) status2,
   sum(case status When 3 Then 1 End) status3,
   sum(case status When 4 Then 1 End) status4,
   etc.
From table

答案 3 :(得分:0)

select count(status) where status = x

会产生单一状态的计数。

也许你可以嵌套这个陈述,但这可能效率低下。

编辑: Group By是要走的路。见其他答案。

答案 4 :(得分:0)

重要的是要注意,您所询问的内容会暗示代码修改为支持的状态更改。我认为将结果分成几行可能会更好。 这个可以在几行中给你相同的结果:

SELECT COUNT(DISTINCT status) FROM mytable;

因此,您可以在没有查询修改的情况下迭代漏洞时间。希望有所帮助

答案 5 :(得分:0)

尝试这个会帮助你

select status, count(*) from tablename
group by status