如图:程序员在进行如下的统计时,现在提供两种实现方案:
方案一:运用 SEKECT CASE WHEN
EXPLAIN
SELECT
count(*) AS '总数',
count(
CASE oup.status
WHEN '1' THEN
oup.id
END
) AS '未绑定',
count(
CASE oup.status
WHEN '2' THEN
oup.id
END
) AS '已绑定',
count(
CASE oup.status
WHEN '3' THEN
oup.id
END
)AS '冻结中'
FROM
lab_org_uc_passport oup
显示结果:(按行显示)
方案二:
SELECT count(*) AS '总数' FROM lab_org_uc_passport oup
UNION ALL
SELECT count(*) AS '未绑定' FROM lab_org_uc_passport oup WHERE oup.status = '1'
UNION ALL
SELECT count(*) AS '未绑定' FROM lab_org_uc_passport oup WHERE oup.status = '2'
UNION ALL
SELECT count(*) AS '未绑定' FROM lab_org_uc_passport oup WHERE oup.status = '3'
显示结果(按列显示)
34
3
10
21
SQL统计技巧对比
本文对比了两种SQL统计方法:一种使用CASE WHEN语句,另一种采用UNION ALL方式。前者适用于获取单行多列的统计数据,后者则适用于展示多行单列的数据格式。
3066

被折叠的 条评论
为什么被折叠?



