排名

用户解题统计

过去一年提交了

勋章 ①金银铜:在竞赛中获得第一二三名;②好习惯:自然月10天提交;③里程碑:解决1/2/5/10/20/50/100/200题;④每周打卡挑战:完成每周5题,每年1月1日清零。

收藏

收藏日期 题目名称 解决状态
2025-02-20 窗口函数(1)年度前三和每月前三,搞懂排序窗口函数  已解决

评论笔记

评论日期 题目名称 评论内容 站长评论
2025-02-23 数学成绩分段统计(3) 
WITH score_ranges AS (
    SELECT 
        s.class_code,
        CASE 
            WHEN sc.score >= 110 THEN 'excellent'
            WHEN sc.score >= 90 THEN 'good'
            WHEN sc.score >= 60 THEN 'pass'
            ELSE 'fail'
        END AS score_range
    FROM 
        students s
    JOIN 
        scores sc ON s.student_id = sc.student_id
    WHERE 
        sc.subject = '数学' 
        AND sc.exam_date = '2024-06-30'
),
count_score AS (
    SELECT 
        sr.class_code,
        SUM(CASE WHEN sr.score_range = 'excellent' THEN 1 ELSE 0 END) AS excellent_count,
        SUM(CASE WHEN sr.score_range = 'good' THEN 1 ELSE 0 END) AS good_count,
        SUM(CASE WHEN sr.score_range = 'pass' THEN 1 ELSE 0 END) AS pass_count,
        SUM(CASE WHEN sr.score_range = 'fail' THEN 1 ELSE 0 END) AS fail_count,
        COUNT(*) AS total_students
    FROM 
        score_ranges sr
    GROUP BY 
        sr.class_code
)
SELECT 
    class_code,
    total_students,
    CONCAT(excellent_count,', ',ROUND(excellent_count / total_students * 100, 2), '%') AS excellent_rate,
    CONCAT(good_count,', ',ROUND(good_count / total_students * 100, 2), '%') AS good_rate,
    CONCAT(pass_count,', ',ROUND(pass_count / total_students * 100, 2), '%') AS pass_rate,
    CONCAT(fail_count,', ',ROUND(fail_count / total_students * 100, 2), '%') AS fail_rate
FROM 
    count_score
ORDER BY 
    class_code; 我这个结果对比跟答案一样为什么显示错了
啥也没说

提交记录

提交日期 题目名称 提交代码
2025-02-25 用户听歌习惯的时间分布 
select distinct user_id ,
 dayname(start_time) as day_of_week,
 count(*) as 	listens_per_day
from listen_rcd
group by user_id,day_of_week
order by user_id,day_of_week;
2025-02-25 通勤、午休、临睡个时间段活跃人数分布 
SELECT
    COUNT(DISTINCT CASE
        WHEN TIME(login_time) BETWEEN '07:30:00' AND '09:30:00'
             OR TIME(login_time) BETWEEN '18:30:00' AND '20:30:00' THEN usr_id
    END) AS commute,
    COUNT(DISTINCT CASE
        WHEN TIME(login_time) BETWEEN '11:30:00' AND '14:00:00' THEN usr_id
    END) AS lunch_break,
    COUNT(DISTINCT CASE
        WHEN TIME(login_time) BETWEEN '22:30:00' AND '23:59:59' THEN usr_id
        WHEN TIME(login_time) BETWEEN '00:00:00' AND '01:00:00' THEN usr_id
    END) AS bedtime
FROM
    user_login_log
WHERE
    login_time >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01')
    AND login_time < DATE_FORMAT(CURDATE(), '%Y-%m-01');
2025-02-25 上月活跃用户数 
SELECT 
    COUNT(DISTINCT usr_id) AS active_users
FROM 
    user_login_log
WHERE 
   month(login_time)= month(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)) and year(login_time)=year(now());
2025-02-25 上月活跃用户数 
select count(distinct usr_id) as active_users
from user_login_log 
wherelogin_time >= DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01 00:00:00')
    AND login_time < DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00');
2025-02-25 上月活跃用户数 
select count(distinct usr_id) as active_users
from user_login_log 
where month(login_time)=month(date_sub(current_date,interval 1 month));
2025-02-25 一线城市历年平均气温 
select year(dt) as Y
    ,cast(avg(case when city='beijing' then tmp_h else null end) as decimal(4,2)) as '北京'
    ,cast(avg(case when city='shanghai' then tmp_h else null end) as decimal(4,2)) as 上海
    ,cast(avg(case when city='shenzhen' then tmp_h else null end) as decimal(4,2)) as 深圳
    ,cast(avg(case when city='guangzhou' then tmp_h else null end) as decimal(4,2)) as 广州
from
    weather_rcd_china
where 
    year(dt) between 2011 and 2022
group by 
    year(dt)
2025-02-25 冬季下雪天数 
select 
 city , sum(case when con like '%雪%' then 1 else 0 end) as snowy_days
from weather_rcd_china 
where month(dt) in (12,1,2)
group by city
order by snowy_days desc;
2025-02-25 滴滴面试真题(2)打车订单呼叫应答时间 
select avg(timestampdiff(second,call_time,grab_time) ) as avg_response_time_seconds
from didi_order_rcd 
wheregrab_time != '1970-01-01 00:00:00';
2025-02-25 条件过滤(3)Hour函数很给力,组合条件要仔细 
select
    *
from
    cmb_usr_trx_rcd
where
    date(trx_time) 
    between '2024-09-01' and '2024-09-30' 
    and hour(trx_time) in (22,23,0,1,2,3,4,5)
    and usr_id = '5201314520' 
order by trx_time
2025-02-25 条件过滤(2)半夜活动有猫腻,Hour函数给给力 
select * from cmb_usr_trx_rcd where usr_id=5201314520 and year(trx_time)=2024 and month(trx_time)=9 and hour(trx_time) in (1,2,3,4,5);
2025-02-25 条件过滤(1)异地男友有异常,数分闺蜜来帮忙 
select * from cmb_usr_trx_rcd where usr_id=5201314520 and date(trx_time) between '2024-09-01' and '2024-09-30';
2025-02-23 平均分最高的班级 
WITH student_total_scores AS (
    SELECT 
        s.class_code, 
        s.student_id, 
        SUM(sc.score) AS total_score
    FROM 
        students s
    JOIN 
        scores sc ON s.student_id = sc.student_id
    WHERE 
        sc.exam_date = '2024-06-30'
    GROUP BY 
        s.class_code, s.student_id
),
class_averages AS (
    SELECT 
        sts.class_code, 
        COUNT(DISTINCT sts.student_id) AS num_students, 
        SUM(sts.total_score) AS class_total_score
    FROM 
        student_total_scores sts
    GROUP BY 
        sts.class_code
)
SELECT 
    ca.class_code, 
    ca.num_students, 
    ROUND(ca.class_total_score / ca.num_students, 2) AS avg_score, 
    t.name AS head_teacher_name
FROM 
    class_averages ca
JOIN 
    teachers t ON t.class_code LIKE CONCAT('%', ca.class_code, '%')
WHERE 
    t.head_teacher = ca.class_code
ORDER BY 
    avg_score DESC
2025-02-23 化学老师的教学成果 
WITH total_students AS (
    SELECT 
        t.name AS teacher_name, 
        COUNT(DISTINCT s.student_id) AS total_students
    FROM 
        teachers t
    JOIN 
        students s ON t.class_code LIKE CONCAT('%', s.class_code, '%')
    WHERE 
        t.subject = '化学'
    GROUP BY 
        t.name
),
failed_students AS (
    SELECT 
        t.name AS teacher_name, 
        COUNT(DISTINCT s.student_id) AS failed_students
    FROM 
        teachers t
    JOIN 
        students s ON t.class_code LIKE CONCAT('%', s.class_code, '%')
    JOIN 
        scores sc ON s.student_id = sc.student_id
    WHERE 
        t.subject = '化学'
        AND sc.subject = '化学'
        AND sc.score < 60
    GROUP BY 
        t.name
)
SELECT 
    ts.teacher_name, 
    ts.total_students, 
    fs.failed_students, 
    ROUND((fs.failed_students / ts.total_students) * 100, 2) AS failure_rate
FROM 
    total_students ts
JOIN 
    failed_students fs ON ts.teacher_name = fs.teacher_name
ORDER BY 
    failure_rate DESC;
2025-02-23 优异物理成绩的分布 
SELECT 
    s.class_code, 
    COUNT(distinct s.student_id) AS num_students_90_plus, 
    ROUND(AVG(sc.score), 2) AS avg_score_90_plus, 
    t.name AS physics_teacher
FROM 
    students s
JOIN 
    scores sc ON s.student_id = sc.student_id
JOIN 
    teachers t ON t.class_code LIKE CONCAT('%', s.class_code, '%')
WHERE 
    sc.subject = '物理' 
    AND sc.score >= 90
    AND t.subject = '物理'
GROUP BY 
    s.class_code, t.name
ORDER BY 
    avg_score_90_plus DESC;
2025-02-23 文科潜力股 
select * 
from scores 
where score>=90 and subject in ('历史','政治','地理') and exam_date='2024-06-30'
order by score desc ,student_id,subject;
2025-02-23 文科潜力股 
select * 
from scores 
where score>=90 and subject in ('历史','政治','地理')
order by score desc ,student_id,subject;
2025-02-23 给英语成绩中上水平的学生拔尖 
select 
    * 
from 
    scores
where subject='英语' 
and score between 100 and 110
and exam_date='2024-06-30'
order by score desc
2025-02-23 找出三个班级的女生 
select * 
from students 
where class_code in ('C219','C220','C221') and gender = 'f';
2025-02-23 语文数学英语至少1门超过100分的同学 
select 
    * 
from 
    subject_score 
where chinese >100 or math >100 or english >100 
order by chinese
2025-02-23 小结-缺考超过5次的学生 
select student_id 
from scores 
group by student_id
having sum(case when score is null then 1 else 0 end)>5
order by student_id