SQL VQ10 计算刷题总人数

SQL VQ10 计算刷题总人数

题目 : 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

猜你喜欢

转载自blog.csdn.net/qq_44226094/article/details/130021902
今日推荐