select
*
from subject_score
where (chinese >=110 and math >=110) or (chinese >=110 and english >=110) or(math >=110 and english >=110)
order by student_id asc;
SELECT student_id, chinese, math, english
FROM (
SELECT *,
(chinese >= 110) + (math >= 110) + (english >= 110) AS total
FROM subject_score
) AS t1
WHERE total >= 2;
SELECT student_id, chinese, math, english
FROM subject_score
HAVING (chinese >= 110) + (math >= 110) + (english >= 110) >= 2;
SELECT
s.singer_id,
s.singer_name,
a.album_id,
a.album_name,
COUNT(l.id) AS play_count
FROM
singer_info s
JOIN
album_info a ON s.singer_id = a.singer_id
LEFT JOIN
song_info sg ON a.album_id = sg.album_id
LEFT JOIN
listen_rcd l ON sg.song_id = l.song_id
GROUP BY
s.singer_id, s.singer_name, a.album_id, a.album_name
HAVING
play_count = 0;
select
a.prd_id
,a.prd_nm
,count(distinct b.cust_uid)
from tb_prd_map a
left join tb_pg_act_rcd b on a.prd_id = b.prd_id
where b.if_snd = 1
group by 1,2
order by 3 desc
limit 1
WITH distinct_login_days AS (
SELECT
usr_id,
COUNT(DISTINCT DATE(login_time)) AS login_days
FROM
user_login_log
WHERE
login_time >= DATE_SUB(CURDATE(), INTERVAL 180 DAY)
GROUP BY
usr_id
)
SELECT
SUM(CASE WHEN login_days BETWEEN 1 AND 5 THEN 1 ELSE 0 END) AS days_1_to_5,
SUM(CASE WHEN login_days BETWEEN 6 AND 10 THEN 1 ELSE 0 END) AS days_6_to_10,
SUM(CASE WHEN login_days BETWEEN 11 AND 20 THEN 1 ELSE 0 END) AS days_11_to_20,
SUM(CASE WHEN login_days > 20 THEN 1 ELSE 0 END) AS days_over_20
FROM
distinct_login_days;
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');