牛客网之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岁及以上

相关内容

热门资讯

“全球文旅轻创业计划”在京发布... 2025年11月17日上午,“银发文旅项目发布会暨全球文旅轻创业计划启动仪式”在中国传媒大学成功举办...
城事|办理口岸过百,台湾“首来... 据央视新闻消息,19日,国台办举行例行发布会,大陆持续释放旅游福利,首次来大陆的台胞“首来族”可获得...
北京最正规的十大旅行社|途开心... 友友们,来北京旅游,谁不想沉浸式感受一把地道的老北京生活气息呢?但想玩好,选对旅行社至关重要。今天就...
从“看景”到“尝味” :高德扫... 11月18日,高德扫街榜烟火城市系列发布会·烟火成都(全国首站)活动在成都正式举办。活动中,四川省商...
红酒防伪溯源标签怎么看?教你如... 瓶身上那闪闪发光的防伪溯源标签吸引了她的目光,她刚刚从一个陌生的酒庄购买了这瓶红酒,但内心始终无法摆...