use*_*030 8 sql case count conditional-statements
我有一个问题,希望你们能帮助我.
我有一个包含两列的表:
type // contains 2 different values: "Raid" and "Hold"
authorization // contains 2 different values: "Accepted" or "Denied"
Run Code Online (Sandbox Code Playgroud)
我需要创建一个返回如下值的视图:
TYPE:RAID ACCEPTED:5 DENIED:7
Run Code Online (Sandbox Code Playgroud)
基本上我想知道有多少值TYPE是"Raid",然后有多少是"已接受"和"被拒绝".
先感谢您!!
Phi*_*ley 16
SELECT
Type
,sum(case Authorization when 'Accepted' then 1 else 0 end) Accepted
,sum(case Authorization when 'Denied' then 1 else 0 end) Denied
from MyTable
where Type = 'RAID'
group by Type
Run Code Online (Sandbox Code Playgroud)
您可以COUNT与CASE语句结合使用
SELECT COUNT(CASE authorization WHEN 'denied' THEN 1 ELSE NULL END) as denied,
COUNT(CASE authorization WHEN 'authorized' THEN 1 ELSE NULL END) as authorized
FROM table
WHERE type = 'RAID'
Run Code Online (Sandbox Code Playgroud)
SUM(CASE …)也是可能的,但你必须0在ELSE子句中返回而不是NULL
此代码应适用于mySQL
SELECT type, COUNT(*)
FROM table
GROUP BY type;
Run Code Online (Sandbox Code Playgroud)
要么
SELECT type, authorization, COUNT(*)
FROM table
GROUP BY type, authorization;
Run Code Online (Sandbox Code Playgroud)