排名

用户解题统计

过去一年提交了

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

收藏

收藏日期 题目名称 解决状态
没有收藏的题目。

评论笔记

评论日期 题目名称 评论内容 站长评论
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
2022年11月至2024年,为啥答案不包含22年1月1日呢
啥也没说
2025-02-05 小结(1)大数据早就能扫黄,找足证据不慌张 
你这实际答案输出和输出示例好像对不上哎,有点误导人哎
啥也没说
2025-02-05 字符串与通配符(2)好多关键词做规则,可以使用rlike 
这道题有个大坑,CASE WHEN的条件判断是需要有先后顺序的。。。我感觉这题出的挺莫名其妙的,业务逻辑上也有点怪,理论上两个条件是可以互相重叠才对,非要用CASE WHEN拆开
认真刷题👍

很多同学不知道case when 有先后顺序。
复制这个飞书链接,去看下其他同学的想法:

https://qxvb1cn8oj.feishu.cn/minutes/obcnph921nldwtxm68c2tns9
2025-02-05 分组与聚合函数(3)五花八门的项目,其实都有固定套路(1) 
建议改成:92,95,98 (手动狗头,懂得都懂)
啥也没说
2025-02-05 分组与聚合函数(2)擦边营收怎么样,聚合函数可看出 
答案与问题不符。。。。你问题里说明是要查这个渣男的,怎么不限定usr_id呢?
啥也没说
2025-02-05 条件过滤(1)异地男友有异常,数分闺蜜来帮忙 
我们平时还有一种写法,是先用substr把时间戳的日期前缀截取出来,这样就不用担心闭合不全的问题了:

SELECT A.usr_id,A.mch_nm, A.trx_time,A.trx_amt
FROM
(SELECT *,SUBSTR(trx_time,1,10) AS date_id
FROM cmb_usr_trx_rcd
WHERE usr_id = '5201314520' ) AS A
WHERE A.date_id BETWEEN '2024-09-01' AND '2024-09-30'
ORDER BY trx_time
啥也没说
2025-02-05 条件过滤(1)异地男友有异常,数分闺蜜来帮忙 
In SQL, the BETWEEN operator is inclusive, meaning it includes the boundary values. However, when comparing a timestamp with a date, the date is implicitly treated as the start of the day (i.e., '2024-09-30' is treated as '2024-09-30 00:00:00').

所以如果不想用date,2024-09-30就要改成2024-10-01。但是假如刚好有一条 2024-10-01 00:00:00,那么查询的结果也是错的。保险起见还是加上date比较好。这个太坑了,平时真的很少会留意这些细节
啥也没说

提交记录

提交日期 题目名称 提交代码
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
select 
substr(trx_time,1,7) as trx_mon,
count(1) as trx_cnt,
sum(trx_amt) as trx_amt
from
cmb_usr_trx_rcd
where
usr_id = 5201314520 and
date(trx_time) > '2022-11-01' and date(trx_time) <= '2024-12-31'
and 
(((truncate(trx_amt,0) rlike "88$|98$" and trx_amt>200) and
hour(trx_time) in (0,23,1,2))
or
upper(mch_nm) rlike "足疗|保健|按摩|养生|SPA")
group by trx_mon
order by trx_mon
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND ((TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98')
AND trx_amt > 200 
AND (HOUR(trx_time) >=23 OR HOUR(trx_time)<=3))
OR (upper(mch_nm) RLIKE '足疗|保健|按摩|养生|SPA')
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND ((TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98')
AND trx_amt > 200 
AND (HOUR(trx_time) >=23 OR HOUR(trx_time)<=3))
OR (lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa')
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND (TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98')
AND trx_amt > 200 
AND (HOUR(trx_time) >=23 OR HOUR(trx_time)<=3)
AND lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
select 
substr(trx_time,1,7) as trx_mon,
count(1) as trx_cnt,
sum(trx_amt) as trx_amt
from
cmb_usr_trx_rcd
where
usr_id = 5201314520 and
date(trx_time) > '2022-11-01' and date(trx_time) <= '2024-12-31'
and 
((truncate(trx_amt,0) rlike "88$|98$" and trx_amt>200) and
hour(trx_time) in (0,23,1,2)
or
upper(mch_nm) rlike "足疗|保健|按摩|养生|SPA")
group by trx_mon
order by trx_mon
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) > '2022-11-01' AND date(trx_time)<='2024-12-31'
AND usr_id = '5201314520'
AND (TRUNCATE(trx_amt,0) RLIKE "88$|98$" and trx_amt>200 AND HOUR(trx_time)IN (23,0,1,2))
OR upper(mch_nm) RLIKE '足疗|保健|按摩|养生|SPA'
GROUP BY trx_mon
ORDER BY trx_mon ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND (TRUNCATE(trx_amt,0) RLIKE "88$|98$" and trx_amt>200 AND HOUR(trx_time)IN (23,0,1,2))
OR upper(mch_nm) RLIKE '足疗|保健|按摩|养生|SPA'
GROUP BY trx_mon
ORDER BY trx_mon ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND (TRUNCATE(trx_amt,0) RLIKE "88$|98$" and trx_amt>200 AND HOUR(trx_time)IN (23,0,1,2))
OR lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY trx_mon
ORDER BY trx_mon ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND (TRUNCATE(trx_amt,0) RLIKE "88$|98$" and trx_amt>200 AND HOUR(trx_time)IN (23,0,1,2))
OR lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND ((TRUNCATE(trx_amt,0) RLIKE "88$|98$" and trx_amt>200)AND HOUR(trx_time) IN (23,0,1,2))
OR lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND ((TRUNCATE(trx_amt,0) RLIKE "88$|98$" and trx_amt>200))
AND HOUR(trx_time) IN (23,0,1,2)
AND lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98'
AND trx_amt > 200 
AND HOUR(trx_time) IN (23,0,1,2)
AND lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_mon, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98'
AND trx_amt > 200 
AND HOUR(trx_time) >=23 AND HOUR(trx_time)<=3
AND lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS trx_month, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98'
AND trx_amt > 200 
AND HOUR(trx_time) >=23 AND HOUR(trx_time)<=3
AND lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(2)越花越多是死罪,按月统计Substr 
SELECT 
SUBSTR(trx_time,1,7) AS month, 
COUNT(1) AS trx_cnt,
SUM(trx_amt) AS trx_amt
FROM cmb_usr_trx_rcd
WHERE date(trx_time) BETWEEN '2022-11-01' AND '2024-12-31'
AND usr_id = '5201314520'
AND TRUNCATE(trx_amt,0) LIKE '%88' OR TRUNCATE(trx_amt,0) LIKE '%98'
AND trx_amt > 200 
AND HOUR(trx_time) >=23 AND HOUR(trx_time)<=3
AND lower(mch_nm) RLIKE '足疗|保健|按摩|养生|spa'
GROUP BY SUBSTR(trx_time,1,7)
ORDER BY 1 ASC
2025-02-05 小结(1)大数据早就能扫黄,找足证据不慌张 
select
    case
        when
            (truncate(trx_amt, 0) like '%88' or truncate(trx_amt, 0) like '%98') and
            trx_amt >= 200 and
            (hour(trx_time) between 0 and 3 or hour(trx_time) = 23)
        then 'illegal'
        else 'other'
    end as trx_typ,
    count(1) as trx_cnt,
    sum(trx_amt) as trx_amt,
    count(distinct mch_nm) as mch_cnt
from
    cmb_usr_trx_rcd
where
    usr_id = '5201314520'
group by
    trx_typ
order by
    trx_cnt desc;
2025-02-05 小结(1)大数据早就能扫黄,找足证据不慌张 
SELECT 
CASE 
WHEN (FLOOR(trx_amt) % 100 IN (88, 98) AND trx_amt > 200) 
 AND 
 (TIME(trx_time) >= '23:00:00' OR TIME(trx_time) < '04:00:00') 
THEN 'illegal' 
ELSE 'other' 
END AS trx_typ,
COUNT(*) AS trx_cnt,
ROUND(SUM(trx_amt), 2) AS trx_amt,
COUNT(DISTINCT mch_nm) AS mch_cnt
FROM cmb_usr_trx_rcd
WHERE usr_id = '5201314520'
GROUP BY trx_typ
2025-02-05 字符串与通配符(2)好多关键词做规则,可以使用rlike 
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 
WHERE lower(mch_nm) RLIKE '按摩|保健|休闲|养生|spa|会所'
OR mch_nm LIKE '%按摩保健休闲%'
GROUP BY reg_rules
2025-02-05 字符串与通配符(1)名称里面有特服,可以使用通配符 
SELECT COUNT(DISTINCT mch_nm) AS mch_cnt
FROM cmb_usr_trx_rcd
WHERE mch_nm LIKE '%按摩保健休闲%'
2025-02-05 分类(1)姿势太多很过分,分类要用CaseWhen 
SELECT
CASE WHEN trx_amt = 288 THEN '1.WithHand'
WHEN trx_amt = 388 THEN '2.WithMimi'
WHEN trx_amt = 588 THEN '3.BlowJobbie'
WHEN trx_amt = 888 THEN '4.Doi'
WHEN trx_amt = 1288 THEN '5.DoubleFly'
ELSE '6.other' END as ser_type,
COUNT(1) AS trx_cnt,
MIN(DATE(trx_time)) AS first_date
FROM cmb_usr_trx_rcd
WHERE mch_nm = '红玫瑰按摩保健休闲'
AND usr_id = '5201314520'
GROUP BY 
CASE WHEN trx_amt = 288 THEN '1.WithHand'
WHEN trx_amt = 388 THEN '2.WithMimi'
WHEN trx_amt = 588 THEN '3.BlowJobbie'
WHEN trx_amt = 888 THEN '4.Doi'
WHEN trx_amt = 1288 THEN '5.DoubleFly'
ELSE '6.other' END 
ORDER BY 1 ASC