WITH ranked_scores AS (
SELECT
s.student_id,
s.name,
sc.score,
rank() OVER ( ORDER BY sc.score DESC) AS rnk
FROM
students s
JOIN
scores sc ON s.student_id = sc.student_id
WHERE
s.grade_code = 'S1'
AND sc.subject = '物理'
)
SELECT
student_id,
name,
score,
rnk
FROM
ranked_scores
WHERE
rnk <= 10
ORDER BY
rnk,student_id
WITH ranked_scores AS (
SELECT
s.student_id,
s.name,
sc.score,
rank() OVER (PARTITION BY s.grade_code ORDER BY sc.score DESC) AS rnk
FROM
students s
JOIN
scores sc ON s.student_id = sc.student_id
WHERE
s.grade_code = 'S1'
AND sc.subject = '物理'
)
SELECT
student_id,
name,
score,
rnk
FROM
ranked_scores
WHERE
rnk <= 10
ORDER BY
rnk,student_id
SELECT
CASE
WHEN sc.score >= 110 THEN '[110, 120]'
WHEN sc.score >= 90 THEN '[90, 110)'
WHEN sc.score >= 60 THEN '[60, 90)'
ELSE '[0, 60)'
END AS score_range,
COUNT(*) AS num_students
FROM
students s
inner jOIN
scores sc ON s.student_id = sc.student_id
WHERE
sc.subject = '数学'
AND sc.exam_date = '2024-06-30'
GROUP BY
score_range
WITH ranked_scores AS (
SELECT
s.student_id,
s.name,
sc.score,
dense_RANK() OVER (ORDER BY sc.score DESC) AS ranking
FROM
students s
JOIN
scores sc ON s.student_id = sc.student_id
WHERE
s.grade_code = 'S1'
AND sc.subject = '物理'
)
SELECT
student_id,
name,
score,
ranking
FROM
ranked_scores
WHERE
ranking <= 10
ORDER BY
ranking;
select exam_date,MAX(CASE WHEN subject = '语文' THEN score ELSE NULL END) AS chinese_score,
MAX(CASE WHEN subject = '数学' THEN score ELSE NULL END) AS math_score,
MAX(CASE WHEN subject = '英语' THEN score ELSE NULL END) AS english_score
from scores
where student_id =460093
group by 1
WITH
distinct_login_days AS (
SELECT
usr_id,
login_time
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')
)
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
distinct_login_days;
select city,
sum(case when con like '%多云%' then 1 else 0 end) as cloudy_days
,concat(cast(sum(case when con like '%多云%' then 1 else 0 end)/count(1)*100 as decimal(4,2)),'%') as p
from
weather_rcd_china
where
year(dt)=2021
group by
city
order by
3 desc
select a.mch_nm as asshole_tried,a.trx_cnt, b.mch_nm as darling_tried from
(select mch_nm, count(1) trx_cnt
from cmb_usr_trx_rcd
where year(trx_time) in (2023,2024) and usr_id='5201314520'
group by mch_nm
having count(1) >=20)a
left join
(select distinct mch_nm
from cmb_usr_trx_rcd
where year(trx_time) in (2023,2024) and usr_id='5211314521')b
on a.mch_nm = b.mch_nm order by 2 desc
select a.mch_nm as asshole_tried,a.trx_cnt, b.mch_nm as darling_tried from
(select mch_nm, count(trx_time) trx_cnt
from cmb_usr_trx_rcd
where year(trx_time) in (2023,2024) and usr_id='5201314520'
group by mch_nm
having count(1) >=20)a
left join
(select distinct mch_nm
from cmb_usr_trx_rcd
where year(trx_time) in (2023,2024) and usr_id='5211314521')b
on a.mch_nm = b.mch_nm order by 2 desc
select a.mch_nm as asshole_tried,a.trx_cnt, b.mch_nm as darling_tried from
(select mch_nm, count(trx_amt) trx_cnt
from cmb_usr_trx_rcd
where year(trx_time) in (2023,2024) and usr_id='5201314520'
group by mch_nm
having count(1) >=20)a
left join
(select distinct mch_nm
from cmb_usr_trx_rcd
where year(trx_time) in (2023,2024) and usr_id='5211314521')b
on a.mch_nm = b.mch_nm order by 2 desc
select
case
when mch_nm like '%按摩保健休闲%' then '按摩保健休闲'
when lower(mch_nm) rlike '.*(按摩|保健|休闲|spa|养生|会所).*' then '按摩、保健、休闲、养生、SPA、会所'
else ' '
end as reg_rules,
count(distinct mch_nm) as mch_cnt
from
cmb_usr_trx_rcd
where mch_nm like '%按摩保健休闲%'
or lower(mch_nm) rlike '.*(按摩|保健|休闲|spa|养生|会所).*'
group by reg_rules
order by mch_cnt desc;
select
case
when mch_nm like '%按摩保健休闲%' then '按摩保健休闲'
when lower(mch_nm) rlike '.*(按摩|保健|休闲|spa|养生|会所).*' then '按摩、保健、休闲、养生、SPA、会所'
end as reg_rules,
count(distinct mch_nm) as mch_cnt
from
cmb_usr_trx_rcd
group by reg_rules
order by mch_cnt desc;
select usr_id,mch_nm,sum(trx_amt)trx_amt,count(1)trx_cnt, min(trx_time)first_time from cmb_usr_trx_rcd
where
usr_id='5201314520'
and trx_amt>=288
group by usr_id,mch_nm
order by trx_cnt desc
select usr_id,mch_nm,sum(trx_amt)trx_amt,count(1)trx_cnt, min(trx_time)first_time from cmb_usr_trx_rcd
where
usr_id='5201314520'
and trx_amt>=288
group by usr_id,mch_nm
order by trx_cnt desc
limit 5
select usr_id,mch_nm,sum(trx_amt)trx_amt,count(trx_amt)trx_cnt, min(trx_time)first_time from cmb_usr_trx_rcd
group by usr_id,mch_nm
order by trx_cnt desc
limit 5