Mysql 聚合函数count,if的使用
作者:互联网
无论是对于Mysql还是C++,Java等语言的学习都需要刷题,刷题可以提高对基本语法的熟悉,不刷题的话很容易遗忘一些知识点,计算机课程的学习主要要实践
题目: 现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0.
示例输入
CREATE TABLE user_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 TABLE question_practice_detail
(
id
int NOT NULL,
device_id
int NOT NULL,
question_id
int NOT NULL,
result
varchar(32) NOT NULL,
date
date NOT NULL
);
CREATE TABLE question_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’,‘2021-05-03’);
INSERT INTO question_practice_detail VALUES(2,3214,112,‘wrong’,‘2021-05-09’);
INSERT INTO question_practice_detail VALUES(3,3214,113,‘wrong’,‘2021-06-15’);
INSERT INTO question_practice_detail VALUES(4,6543,111,‘right’,‘2021-08-13’);
INSERT INTO question_practice_detail VALUES(5,2315,115,‘right’,‘2021-08-13’);
INSERT INTO question_practice_detail VALUES(6,2315,116,‘right’,‘2021-08-14’);
INSERT INTO question_practice_detail VALUES(7,2315,117,‘wrong’,‘2021-08-15’);
INSERT INTO question_practice_detail VALUES(8,3214,112,‘wrong’,‘2021-05-09’);
INSERT INTO question_practice_detail VALUES(9,3214,113,‘wrong’,‘2021-08-15’);
INSERT INTO question_practice_detail VALUES(10,6543,111,‘right’,‘2021-08-13’);
INSERT INTO question_practice_detail VALUES(11,2315,115,‘right’,‘2021-08-13’);
INSERT INTO question_practice_detail VALUES(12,2315,116,‘right’,‘2021-08-14’);
INSERT INTO question_practice_detail VALUES(13,2315,117,‘wrong’,‘2021-08-15’);
INSERT INTO question_practice_detail VALUES(14,3214,112,‘wrong’,‘2021-08-16’);
INSERT INTO question_practice_detail VALUES(15,3214,113,‘wrong’,‘2021-08-18’);
INSERT INTO question_practice_detail VALUES(16,6543,111,‘right’,‘2021-08-13’);
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’);
答案
device_id university question-cnt right_question_cnt
3214 复旦大学 3 0
4321 复旦大学 0 0
select user.device_id,count(qpd.device_id),sum(if(qpd.result='rigth',1,0))
from user_profile user
left join question_practice_detail qpd
on user.device_id=qpd.device_id and month(qpd.date)=8
and user.university='复旦大学'
group by user.device_id;
标签:count,INSERT,聚合,INTO,practice,question,detail,VALUES,Mysql 来源: https://blog.csdn.net/m0_62768029/article/details/123172020