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

相关内容

热门资讯

原创 夏... 夏天湿热重、脾胃易虚寒,这4道汤健脾祛湿、暖胃护胃、清热不伤阳,适合连续两个月常喝,步骤清晰、做法简...
明日四月十六,记得“吃4样,做... 明日农历四月十六,记得“吃4样,做1事”五谷丰登迎福气,老传统别丢! 时光如梭,转眼间来到了农历四月...
今年目标全国销售网点突破200... 5月16日下午6点,贵阳市吾茶白·贵茶潮饮烘焙概念店里排起小队。 “就要这款,上次喝完一直惦记着。”...
原创 淄... 很多人认识淄博只靠烧烤但真正撑起淄博饮食底蕴的从来不是网红热度而是一代代扎根老城的老字号烟火。这些老...
原创 夏... “赤日炎炎似火烧”,这话一到夏天,可算是说到大家心坎里去了。天热起来,不光人没精神,连胃口也跟着变差...