繁体   English   中英

选择条件有效的某些列的计数

[英]Select count of some columns where a condition is valid

这是我目前正在处理的查询:

SELECT COUNT(approved) AS 'approve'
 , COUNT(approved) AS 'deny'
 , COUNT(approved) AS 'unset'
FROM `approval`
WHERE 'approve' = 'Approved'
 AND 'deny' = 'Denied'
 AND 'unset' = 'Unset

我希望计数记录枚举批准的所有时间=批准,拒绝和未设置

使用mysql,有一种巧妙的方法可以执行枢轴操作

SELECT
    SUM(approved = 'Approved') approve,
    SUM(approved = 'Denied') deny,
    SUM(approved = 'Unset') unset
FROM approval
WHERE approved in ('Approved', 'Denied', 'Unset')

这是可行的,因为在mysql中true为1,false为0,因此对条件求和会计算条件为true的次数。

where子句是可选的。

这应该工作:

SELECT SUM(CASE WHEN approved = 'Approved' THEN 1 ELSE 0 END) AS approve,
SUM(CASE WHEN approved = 'Denied' THEN 1 ELSE 0 END) AS deny,
SUM(CASE WHEN approved = 'Unset' THEN 1 ELSE 0 END AS unset
FROM approval
WHERE approved IN ('Approved','Denied','Unset')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM