牛客网之SQL非技术快速入门(5)-union all 和 union 的区别、if 判断、case when XXX then XXX else XXX end
admin
2024-02-03 01:54:44

知识点:

(1)union all 和 union 的区别

     union对两个结果集进行并集操作,不包括重复行,相当于distinct,同时进行默认规则的排序;

     union all:对两个结果集进行并集操作,包括重复行,即所有的结果全部显示,不管是不是重复。

(2) if 判断

(3)case when XXX  then XXX  else XXX end  

25、现在运营想要分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,请取出相应结果,结果不去重。

示例:user_profile

iddevice_idgenderageuniversitygpaactive_days_within_30question_cntanswer_cnt
12138male21北京大学3.47212
23214male复旦大学415525
36543female20北京大学3.212330
42315female23浙江大学3.6512
55432male25山东大学3.8201570
62131male28山东大学3.315713
74321male26复旦大学3.69652
select device_id, gender, age, gpa
from user_profile 
where university ='山东大学' 
union all                               --结果不去重就用union all,去重就用 union。
select device_id, gender, age, gpa
from user_profile 
where  gender = 'male'

根据示例,你的查询应返回以下结果(注意输出的顺序,先输出学校为山东大学再输出性别为男生的信息):

device_idgenderagegpa
5432male253.8
2131male283.3
2138male213.4
3214maleNone4
5432male253.8
2131male283.3
4321male283.6

26、现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量

本题注意:age为null 也记为 25岁以下

方法1:
select  '25岁以下'  age_cut,count(device_id) as number
from user_profile
where age < 25 or age IS NULL
union all 
select  '25岁及以上'  age_cut,count(device_id) as number
from user_profile
where age >= 25 方法2:
select age_cut, count(*)
from (selectif(age>=25, "25岁及以上", "25岁以下") as age_cutfrom user_profile
) as up
group by age_cut方法3:
SELECT case when age<25 OR age IS null then "25岁以下"else "25岁及以上"end  as age_cut,count(device_id) as number
FROM user_profile
GROUP BY age_cut

返回以下结果:

age_cutnumber
25岁以下4
25岁及以上3

27、现在运营想要将用户划分为20岁以下,20-24岁,25岁及以上三个年龄段,分别查看不同年龄段用户的明细情况,请取出相应数据。(注:若年龄为空请返回其他。)

方法1:
select device_id,gender,if(age is null, '其他',if(age<20,'20岁以下',if(age<=24,'20-24岁','25岁及以上')))  age_cut
from user_profile方法2:
select device_id,gender,case when age<20 then '20岁以下'when 20<=age and age<25 then '20-24岁'when age>=25 then '25岁及以上'else '其他'end  age_cut
from user_profile

返回以下结果:

device_idgenderage_cut
2138male20-24岁
3214male其他
6543female20-24岁
2315female20-24岁
5432male25岁及以上
2131male25岁及以上
4321male25岁及以上

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...