题目 : https://www.nowcoder.com/practice/aec305f85d75482e83dc69dd48e2cbfa?tpId=341
数据
drop table if exists questions_pass_record_detail;
CREATE TABLE `questions_pass_record_detail` (
`user_id` int NOT NULL,
`question_type` varchar(32) NOT NULL,
`device` varchar(14) NOT NULL,
`pass_count` int NOT NULL,
`date` date NOT NULL);
INSERT INTO questions_pass_record_detail VALUES(101, 'java', 'app', 2, '2020-03-01');
INSERT INTO questions_pass_record_detail VALUES(102, 'sql', 'pc', 15,'2021-07-07');
INSERT INTO questions_pass_record_detail VALUES(102, 'python', 'pc', 9, '2021-04-09');
INSERT INTO questions_pass_record_detail VALUES(104, 'python', 'app', 3,'2022-03-17');
INSERT INTO questions_pass_record_detail VALUES(105, 'sql', 'pc', 60, '2016-08-15');
INSERT INTO questions_pass_record_detail VALUES(204, 'sql', 'pc', 20, '2019-05-15');
需求
计算刷题不同设备的总人数 , 并将结果命名为 cnt
查询结果 :
cnt
5
解决
-- 对设备进行去重
with t1 as (
select
user_id
from questions_pass_record_detail
group by user_id
)
-- 计算设备的个数
select
count(user_id) as cnt
from t1;
第二种解法 :
- distinct : 对设备进行去重
- count : 计算设备的个数
select
count(distinct(user_id)) as cnt
from questions_pass_record_detail