我有一张桌子"用户"每个用户都有一个列" status"包含值" 1"或" 2"或" 3&#34 ;;
现在使用单个mysqli查询,我只想计算status = 1的用户数,status = 2的用户数以及status = 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