mysql使用单个查询计算多个类型

时间:2016-06-24 12:27:33

标签: mysql sql

我有一张桌子"用户"每个用户都有一个列" status"包含值" 1"或" 2"或" 3&#34 ;;

现在使用单个mysqli查询,我只想计算status = 1的用户数,status = 2的用户数以及status = 3的用户数

注意:查询必须是唯一的,除了每个状态的数量之外,不能选择或输出任何数据。

我发现其他问题几乎涵盖了相同的主题,但它们并不完全相同。

感谢。

3 个答案:

答案 0 :(得分:3)

这个怎么样:

git diff --stat HEAD 'HEAD@{2016-01-01}

count只计算非null条目,case-when也适用于其他数据库。

答案 1 :(得分:1)

使用类似的东西:

SELECT
SUM(IF(value=1,1,0)) as one,
SUM(IF(value=2,1,0)) as two,
SUM(IF(value=3,1,0)) as trhee
FROM users

当您的值达到您想要的值时,IF只会返回“1”。

答案 2 :(得分:1)

这可以通过选择性计数来完成:只需在CASE内使用count表达式,该表达式只传递所需行的非空值:

SELECT count(CASE WHEN status = 1 THEN 1 END) status_1
     , count(CASE WHEN status = 2 THEN 1 END) status_2
     , count(CASE WHEN status = 3 THEN 1 END) status_3
  FROM users

这与使用FILTER的更好但不是nativley支持的语法相同:

SELECT count(*) FILER(WHERE status = 1) status_1
     , count(*) FILER(WHERE status = 2) status_2
     , count(*) FILER(WHERE status = 3) status_3
  FROM users

在我的网站上阅读更多相关内容现代SQL:http://modern-sql.com/feature/filter