WHEN '墨西哥' THEN '北美洲' ELSE '其他' END FROM Table_A GROUP BY CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END; 同样的,我们也可以用...
SUM(CASE WHEN sex=0 THEN 1 ELSE 0 END) AS 女生人数, SUM(CASE WHEN sex=1 THEN 1 ELSE 0 END) AS 男生人数, SUM(CASE WHEN score>=60 AND sex=0 THEN 1 ELSE 0 END) 男生及格人数, SUM(CASE WHEN score>=60 AND sex=1 THEN 1 ELSE 0 END) 女生及格人数 FROM score; SELECT SUM(CASE ...
--比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASEWHENcol_1IN('a','b')THEN'第一类' WHENcol_1IN('a')THEN'第二类' ELSE'其他'END 查看男女人数 1 2 3 4 5 6 7 8 9 10 select sum(casewhens_sex ='男'then1else0end)as'男',-- 性别为男返回1,否则返回0,最后求和 sum(case...
WHEN '墨西哥' THEN '北美洲' ELSE '其他' END FROM Table_A GROUP BY CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END; 同样的,我们也可以用...
ELSE '不及格' END) level FROM score 结果: 3、综合使用 CASE WHEN 和聚合函数综合使用,能实现更加复杂的统计功能。 先看第1个场景 在下表score(sex=1为男,sex=0为女)中,统计有多少个男生和女生以及男女生及格的各有多少个。 SQL: SELECT SUM(CASE WHEN sex=0 THEN 1 ELSE 0 END) AS 女生人数, ...
Here is what I've tried but using Max within the case doesn't work. Select SUM(Case when created_date between 'yyyy-mm-dd' and 'yyyy-mm-dd' then 1 else 0 end) as Created_Count sum(case when max(Exp_Date between 'yyyy-mm-dd' and 'yyyy-mm-dd' then 1 else 0 end) as Exp_...
WHEN col_1 IN ('a') THEN '第二类' ELSE'其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country) 人口(population) ...
先看第1个场景 在下表score(sex=1为男,sex=0为女)中,统计有多少个男生和女生以及男女生及格的各有多少个。 SQL: 代码语言:javascript 复制 SELECTSUM(CASEWHENsex=0THEN1ELSE0END)AS女生人数,SUM(CASEWHENsex=1THEN1ELSE0END)AS男生人数,SUM(CASEWHENscore>=60ANDsex=0THEN1ELSE0END)男生及格人数,SUM(CA...
havingsum(casewhen t2.a>=t1.a then1else0end)>=count(*)/2.0andsum(casewhen t2.a<=t1.a then1else0end)>=count(*)/2.0)tmp; 笛卡尔积连接扫描行数指数增长,性能很差。 2. 使用窗口函数 代码语言:javascript 复制 selectsum(score)/count(*)asmideanfrom(select a score,row_number()over(order...