💖个人主页:@与自己作战
💯作者简介:CSDN@博客专家、CSDN@大数据领域优质创作者、CSDN@内容合伙人、阿里云@专家博主
💞牛客刷题系列篇:【SQL篇】】【Python篇】【Java篇】
📌推荐刷题网站注册地址:【牛客网–SQL篇】
💘推荐理由:从0-1起步,循序渐进
🆘希望大佬们多多支持,携手共进
📝 如果文章对你有帮助的话,欢迎评论💬点赞👍收藏📂加关注
⛔如需要支持请私信我,💯必支持
👩👩👦👦网址注册地址:【牛客网–注册地址】👩👩👦👦
文章目录
一、必会的常用函数
1、条件函数
1.1、SQL26 计算25岁以上和以下的用户数量
描述
题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量
本题注意:age为null 也记为 25岁以下
- 示例1
输入:
drop table if existsuser_profile
;
drop table if existsquestion_practice_detail
;
CREATE TABLEuser_profile
(
id
int NOT NULL,
device_id
int NOT NULL,
gender
varchar(14) NOT NULL,
age
int ,
university
varchar(32) NOT NULL,
gpa
float,
active_days_within_30
int ,
question_cnt
int ,
answer_cnt
int
);
CREATE TABLEquestion_practice_detail
(
id
int NOT NULL,
device_id
int NOT NULL,
question_id
int NOT NULL,
result
varchar(32) NOT NULL
);
CREATE TABLEquestion_detail
(
id
int NOT NULL,
question_id
int NOT NULL,
difficult_level
varchar(32) NOT NULL
);
INSERT INTO user_profile VALUES(1,2138,‘male’,21,‘北京大学’,3.4,7,2,12);
INSERT INTO user_profile VALUES(2,3214,‘male’,null,‘复旦大学’,4.0,15,5,25);
INSERT INTO user_profile VALUES(3,6543,‘female’,20,‘北京大学’,3.2,12,3,30);
INSERT INTO user_profile VALUES(4,2315,‘female’,23,‘浙江大学’,3.6,5,1,2);
INSERT INTO user_profile VALUES(5,5432,‘male’,25,‘山东大学’,3.8,20,15,70);
INSERT INTO user_profile VALUES(6,2131,‘male’,28,‘山东大学’,3.3,15,7,13);
INSERT INTO user_profile VALUES(7,4321,‘male’,28,‘复旦大学’,3.6,9,6,52);
INSERT INTO question_practice_detail VALUES(1,2138,111,‘wrong’);
INSERT INTO question_practice_detail VALUES(2,3214,112,‘wrong’);
INSERT INTO question_practice_detail VALUES(3,3214,113,‘wrong’);
INSERT INTO question_practice_detail VALUES(4,6543,111,‘right’);
INSERT INTO question_practice_detail VALUES(5,2315,115,‘right’);
INSERT INTO question_practice_detail VALUES(6,2315,116,‘right’);
INSERT INTO question_practice_detail VALUES(7,2315,117,‘wrong’);
INSERT INTO question_practice_detail VALUES(8,5432,117,‘wrong’);
INSERT INTO question_practice_detail VALUES(9,5432,112,‘wrong’);
INSERT INTO question_practice_detail VALUES(10,2131,113,‘right’);
INSERT INTO question_practice_detail VALUES(11,5432,113,‘wrong’);
INSERT INTO question_practice_detail VALUES(12,2315,115,‘right’);
INSERT INTO question_practice_detail VALUES(13,2315,116,‘right’);
INSERT INTO question_practice_detail VALUES(14,2315,117,‘wrong’);
INSERT INTO question_practice_detail VALUES(15,5432,117,‘wrong’);
INSERT INTO question_practice_detail VALUES(16,5432,112,‘wrong’);
INSERT INTO question_practice_detail VALUES(17,2131,113,‘right’);
INSERT INTO question_practice_detail VALUES(18,5432,113,‘wrong’);
INSERT INTO question_practice_detail VALUES(19,2315,117,‘wrong’);
INSERT INTO question_practice_detail VALUES(20,5432,117,‘wrong’);
INSERT INTO question_practice_detail VALUES(21,5432,112,‘wrong’);
INSERT INTO question_practice_detail VALUES(22,2131,113,‘right’);
INSERT INTO question_practice_detail VALUES(23,5432,113,‘wrong’);
INSERT INTO question_detail VALUES(1,111,‘hard’);
INSERT INTO question_detail VALUES(2,112,‘medium’);
INSERT INTO question_detail VALUES(3,113,‘easy’);
INSERT INTO question_detail VALUES(4,115,‘easy’);
INSERT INTO question_detail VALUES(5,116,‘medium’);
INSERT INTO question_detail VALUES(6,117,‘easy’);
输出:
25岁以下|4
25岁及以上|3
输入:
droptableifexists`user_profile`;droptableifexists`question_practice_detail`;CREATETABLE`user_profile`(`id`intNOTNULL,`device_id`intNOTNULL,`gender`varchar(14)NOTNULL,`age`int,`university`varchar(32)NOTNULL,`gpa`float,`active_days_within_30`int,`question_cnt`int,`answer_cnt`int);CREATETABLE`question_practice_detail`(`id`intNOTNULL,`device_id`intNOTNULL,`question_id`intNOTNULL,`result`varchar(32)NOTNULL);CREATETABLE`question_detail`(`id`intNOTNULL,`question_id`intNOTNULL,`difficult_level`varchar(32)NOTNULL);INSERTINTO user_profile VALUES(1,2138,'male',21,'北京大学',3.4,7,2,12);INSERTINTO user_profile VALUES(2,3214,'male',null,'复旦大学',4.0,15,5,25);INSERTINTO user_profile VALUES(3,6543,'female',20,'北京大学',3.2,12,3,30);INSERTINTO user_profile VALUES(4,2315,'female',23,'浙江大学',3.6,5,1,2);INSERTINTO user_profile VALUES(5,5432,'male',25,'山东大学',3.8,20,15,70);INSERTINTO user_profile VALUES(6,2131,'male',28,'山东大学',3.3,15,7,13);INSERTINTO user_profile VALUES(7,4321,'male',28,'复旦大学',3.6,9,6,52);INSERTINTO question_practice_detail VALUES(1,2138,111,'wrong');INSERTINTO question_practice_detail VALUES(2,3214,112,'wrong');INSERTINTO question_practice_detail VALUES(3,3214,113,'wrong');INSERTINTO question_practice_detail VALUES(4,6543,111,'right');INSERTINTO question_practice_detail VALUES(5,2315,115,'right');INSERTINTO question_practice_detail VALUES(6,2315,116,'right');INSERTINTO question_practice_detail VALUES(7,2315,117,'wrong');INSERTINTO question_practice_detail VALUES(8,5432,117,'wrong');INSERTINTO question_practice_detail VALUES(9,5432,112,'wrong');INSERTINTO question_practice_detail VALUES(10,2131,113,'right');INSERTINTO question_practice_detail VALUES(11,5432,113,'wrong');INSERTINTO question_practice_detail VALUES(12,2315,115,'right');INSERTINTO question_practice_detail VALUES(13,2315,116,'right');INSERTINTO question_practice_detail VALUES(14,2315,117,'wrong');INSERTINTO question_practice_detail VALUES(15,5432,117,'wrong');INSERTINTO question_practice_detail VALUES(16,5432,112,'wrong');INSERTINTO question_practice_detail VALUES(17,2131,113,'right');INSERTINTO question_practice_detail VALUES(18,5432,113,'wrong');INSERTINTO question_practice_detail VALUES(19,2315,117,'wrong');INSERTINTO question_practice_detail VALUES(20,5432,117,'wrong');INSERTINTO question_practice_detail VALUES(21,5432,112,'wrong');INSERTINTO question_practice_detail VALUES(22,2131,113,'right');INSERTINTO question_practice_detail VALUES(23,5432,113,'wrong');INSERTINTO question_detail VALUES(1,111,'hard');INSERTINTO question_detail VALUES(2,112,'medium');INSERTINTO question_detail VALUES(3,113,'easy');INSERTINTO question_detail VALUES(4,115,'easy');INSERTINTO question_detail VALUES(5,116,'medium');INSERTINTO question_detail VALUES(6,117,'easy');
输出:
25岁以下|425岁及以上|3
1.1.1、SQL语句(第一种写法)
select
if(age >= 25, ‘25岁及以上’,‘25岁以下’) age_cut,
count(1) number
from
user_profile
group by
age_cut
selectif(age >=25,'25岁及以上','25岁以下') age_cut,count(1) number
from
user_profile
groupby
age_cut
1.1.2、SQL语句(第二种写法)
select
case
when age >= 25 then ‘25岁及以上’
else ‘25岁以下’
end as age_cut,
count(1) number
from
user_profile
group by
age_cut
selectcasewhen age >=25then'25岁及以上'else'25岁以下'endas age_cut,count(1) number
from
user_profile
groupby
age_cut
推荐刷题网站:【牛客网–SQL篇】
网址注册地址:【牛客网–注册地址】
版权归原作者 与自己作战 所有, 如有侵权,请联系我们删除。