抓个虫 一直没找到自己的代码逻辑错误,对比了评论区正确答案,好像还是目的要求里的“统计2023-Q1以来的数据”这个条件在最后平台给的代码里没修正
select a.trx_quarter, a.withand, b.doi
from
(select concat(year(trx_time),'-','Q',quarter(trx_time)) trx_quarter,
sum(sum(case when trx_amt=288 then 1 else 0 end)) over(order by concat(year(trx_time),'-','Q',quarter(trx_time)))withand
from cmb_usr_trx_rcd
where usr_id=5201314520 and mch_nm='红玫瑰按摩保健休闲'and date(trx_time)>='2023-01-01'
group by concat(year(trx_time),'-','Q',quarter(trx_time))
order by trx_quarter)a
join
(select concat(year(trx_time),'-','Q',quarter(trx_time)) trx_quarter,
sum(sum(case when trx_amt=888 then 1 else 0 end)) over(order by concat(year(trx_time),'-','Q',quarter(trx_time)))doi
from cmb_usr_trx_rcd
where usr_id=5201314520 and mch_nm='红玫瑰按摩保健休闲'and date(trx_time)>='2023-01-01'
group by concat(year(trx_time),'-','Q',quarter(trx_time))
order by trx_quarter)b on a.trx_quarter=b.trx_quarter
order by a.trx_quarter
(小声说这个解法还是太麻烦了)
什么原因导致代码错误,我代码输出结果中‘红玫瑰按摩保健休闲’的不区分年度总次数(代码运行是82)和参考输出(参考中是57)不一样
select *
from (select null trx_mon,mch_nm,count(trx_amt) trx_amt,dense_rank()over(order by count(trx_amt) desc) rnk
from cmb_usr_trx_rcd
where usr_id=5201314520
group by mch_nm)a
where a.rnk in(1,2)
union
select*
from
(select cmt.mch_typ,cutr.mch_nm,count(cutr.trx_amt) trx_amt,dense_rank()over(partition by cmt.mch_typ order by count(cutr.trx_amt)desc) rnk
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where usr_id=5201314520
group by cmt.mch_typ,cutr.mch_nm)b
where b.rnk in(1,2)
结合讨论区想到两个问题
1、不用max和group by的话使用distinct,也可以确保一个用户在某一个月可能有多笔交易时只取其中一笔吧(代码如下)
2、在对本月天数计算的时候使用substring截取日期字符串最后两位运行结果为错,改用day函数即可通过,是考虑到如‘2024-09-01’,用day函数输出1,substring输出01,虽然两者都是数字形式,但是前者更符合一般逻辑吗?
select distinct substring(cutr.trx_time,1,7) trx_mon,last_day(substring(cutr.trx_time,1,10)) last_day,
substring(last_day(substring(cutr.trx_time,1,10)),-2,2) days_of_mon
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where cutr.usr_id=5201314520 and (year(cutr.trx_time) in(2023,2024)) and cmt.mch_typ='休闲娱乐'
order by substring(cutr.trx_time,1,7)
请问一下这个怎么改
select a.mch_nm asshole_tried,a.trx_cnt, b.mch_nm darling_tried
from
(select mch_nm,count(mch_nm) trx_cnt
from cmb_usr_trx_rcd
where usr_id='5201314520'and(year(trx_time) in (2023,2024))
group by mch_nm
having count(mch_nm)>=20) a
left join
(select distinct(mch_nm)
from cmb_usr_trx_rcd
where usr_id='5211314521' and year(trx_time) in(2923,2024)) b
using (mch_nm)
order by trx_cnt desc
捉个虫,任务要求输出升序,结果正确答案代码order后用的desc
select b.mch_nm
from
(select distinct(mch_nm)
from cmb_usr_trx_rcd
where usr_id='5201314520' and year(trx_time)=2024 ) b
join
(select distinct(mch_nm)
from cmb_usr_trx_rcd
where usr_id='5211314521' and year(trx_time)=2024) a
using(mch_nm)
order by mch_nm desc
请问一下下面两种都错在哪里啊
select
date(trx_time) trx_date,
max(trx_amt) max_trx_amt,
min(trx_amt) min_trx_amt,
avg(trx_amt) avg_trx_amt,
sum(trx_amt) total_trx_amt
from cmb_usr_trx_rcd
where usr_id='5201314520' and (date(trx_time) between '2024-09-01' and '2024-09-30') and mch_nm='红玫瑰按摩保健休闲'
group by date(trx_time)
order by date(trx_time)
select
date(trx_time) trx_date,
max(trx_amt) max_trx_amt,
min(trx_amt) min_trx_amt,
avg(trx_amt) avg_trx_amt,
sum(trx_amt) total_trx_amt
from cmb_usr_trx_rcd
where usr_id='5201314520' and year(trx_time)=2024 and month(trx_time)=9 and mch_nm='红玫瑰按摩保健休闲'
group by date(trx_time)
order by date(trx_time)
select goods_id,sum(order_gmv) as total_gmv,dense_rank()over(order by sum(order_gmv)desc) ranking
from order_info
where date(order_time)='2024-09-10'
group by goods_id
limit 8
select goods_id,sum(order_gmv) as total_gmv,dense_rank()over(order by sum(order_gmv)desc) ranking
from order_info
where date(order_time)='2024-09-10'
group by goods_id
limit 10
select a.goods_id as oods_id, a.total_gmv, a.dr as ranking
from
(
select goods_id,sum(order_gmv) as total_gmv,dense_rank()over(order by sum(order_gmv)desc) dr
from order_info
where date(order_time)='2024-09-10'
group by goods_id)a
where a.dr <=10
select *
from (select null trx_mon,mch_nm,count(trx_amt) trx_amt,dense_rank()over(order by count(trx_amt) desc) rnk
from cmb_usr_trx_rcd
where usr_id=5201314520
group by mch_nm
order by mch_nm desc,rnk)a
where a.rnk in(1,2)
union
select*
from
(select cmt.mch_typ,cutr.mch_nm,count(cutr.trx_amt) trx_amt,dense_rank()over(partition by cmt.mch_typ order by count(cutr.trx_amt)desc) rnk
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where usr_id=5201314520
group by cmt.mch_typ,cutr.mch_nm
order by mch_typ,rnk)b
where b.rnk in(1,2)
select trx_quarter,
sum(WithHand) over (order by trx_quarter) withhand,
sum(Doi) over (order by trx_quarter) doi
from
(select concat(year(trx_time), '-Q', quarter(trx_time)) trx_quarter,
count(trx_amt = 288 or null) WithHand,
count(trx_amt = 888 or null) Doi
from cmb_usr_trx_rcd
where usr_id = 5201314520 and mch_nm = '红玫瑰按摩保健休闲'
group by trx_quarter order by trx_quarter) t
select a.trx_quarter, a.withand, b.doi
from
(select concat(year(trx_time),'-','Q',quarter(trx_time)) trx_quarter,
sum(sum(case when trx_amt=288 then 1 else 0 end)) over(order by concat(year(trx_time),'-','Q',quarter(trx_time)))withand
from cmb_usr_trx_rcd
where usr_id=5201314520 and mch_nm='红玫瑰按摩保健休闲'and date(trx_time)>='2023-01-01'
group by concat(year(trx_time),'-','Q',quarter(trx_time))
order by trx_quarter)a
join
(select concat(year(trx_time),'-','Q',quarter(trx_time)) trx_quarter,
sum(sum(case when trx_amt=888 then 1 else 0 end)) over(order by concat(year(trx_time),'-','Q',quarter(trx_time)))doi
from cmb_usr_trx_rcd
where usr_id=5201314520 and mch_nm='红玫瑰按摩保健休闲'and date(trx_time)>='2023-01-01'
group by concat(year(trx_time),'-','Q',quarter(trx_time))
order by trx_quarter)b on a.trx_quarter=b.trx_quarter
order by a.trx_quarter
select date_format(cutr.trx_time,'%Y-%m') trx_mon,
sum(sum(cutr.trx_amt)) over(order by date_format(cutr.trx_time,'%Y-%m') rows between unbounded preceding and current row) trx_amt
from cmb_usr_trx_rcd cutr left join cmb_mch_typ cmt using(mch_nm)
where date(cutr.trx_time)>='2023-01-01' and cutr.usr_id=5201314520
and cmt.mch_typ='休闲娱乐'
group by date_format(cutr.trx_time,'%Y-%m')
order by date_format(cutr.trx_time,'%Y-%m')
select *
from (select null mch_typ,mch_nm,count(trx_amt) trx_amt,dense_rank()over(order by count(trx_amt) desc) rnk
from cmb_usr_trx_rcd
where usr_id=5201314520
group by mch_nm)a
where a.rnk in(1,2)
union
select*
from
(select cmt.mch_typ,cutr.mch_nm,count(cutr.trx_amt) trx_amt,dense_rank()over(partition by cmt.mch_typ order by count(cutr.trx_amt)desc) rnk
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where usr_id=5201314520
group by cmt.mch_typ,cutr.mch_nm)b
where b.rnk in(1,2)
select *
from (select null trx_mon,mch_nm,count(trx_amt) trx_amt,dense_rank()over(order by count(trx_amt) desc) rnk
from cmb_usr_trx_rcd
where usr_id=5201314520
group by mch_nm)a
where a.rnk in(1,2)
union
select*
from
(select cmt.mch_typ,cutr.mch_nm,count(cutr.trx_amt) trx_amt,dense_rank()over(partition by cmt.mch_typ order by count(cutr.trx_amt)desc) rnk
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where usr_id=5201314520
group by cmt.mch_typ,cutr.mch_nm)b
where b.rnk in(1,2)
select a.trx_mon,a.mch_nm,a.sum_trx_amt
from
(select year(trx_time) trx_mon,mch_nm,sum(trx_amt) sum_trx_amt,row_number()over(order by sum(trx_amt) desc)
from cmb_usr_trx_rcd
where year(trx_time)=2024 and usr_id=5201314520
group by year(trx_time),mch_nm
limit 3)a
union
select b.trx_mon,b.mch_nm,b.sum_trx_amt
from
(select substring(trx_time,1,7) trx_mon,mch_nm,sum(trx_amt) sum_trx_amt,row_number()over(partition by substring(trx_time,1,7) order by sum(trx_amt) desc) rno
from cmb_usr_trx_rcd
where year(trx_time)=2024 and usr_id=5201314520
group by substring(trx_time,1,7),mch_nm)b
where b.rno in(1,2,3)
select a.trx_mon,a.mch_nm,a.sum_trx_amt
from
(select year(trx_time) trx_mon,mch_nm,sum(trx_amt) sum_trx_amt,dense_rank()over(order by sum(trx_amt) desc)
from cmb_usr_trx_rcd
where usr_id=5201314520 and year(trx_time)=2024
group by year(trx_time),mch_nm
limit 3)a
union
select b.trx_mon,b.mch_nm,b.sum_trx_amt
from
(select substring(trx_time,1,7) trx_mon,mch_nm,sum(trx_amt) sum_trx_amt,dense_rank()over(partition by substring(trx_time,1,7) order by sum(trx_amt) desc) drk
from cmb_usr_trx_rcd
where usr_id=5201314520 and year(trx_time)=2024
group by substring(trx_time,1,7),mch_nm)b
where b.drk in(1,2,3)
select distinct substring(cutr.trx_time,1,7) trx_mon,last_day(substring(cutr.trx_time,1,10)) last_day,
day(last_day(substring(cutr.trx_time,1,10))) days_of_mon
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where cutr.usr_id=5201314520 and (year(cutr.trx_time) in(2023,2024)) and cmt.mch_typ='休闲娱乐'
order by substring(cutr.trx_time,1,7)
select distinct substring(cutr.trx_time,1,7) trx_mon,last_day(substring(cutr.trx_time,1,10)) last_day,
substring(last_day(substring(cutr.trx_time,1,10)),-2,2) days_of_mon
from cmb_usr_trx_rcd cutr join cmb_mch_typ cmt using(mch_nm)
where cutr.usr_id=5201314520 and (year(cutr.trx_time) in(2023,2024)) and cmt.mch_typ='休闲娱乐'
order by substring(cutr.trx_time,1,7)
select distinct substring(trx_time,1,7) tex_mon, last_day(substring(trx_time,1,10)) last_day
from cmb_usr_trx_rcd
where usr_id=5201314520 and year(trx_time) in(2023,2024)
order by 1
select gd.gd_id, gd.gd_nm, count(xhs.fav_trq) fav_count
from gd_inf gd join xhs_fav_rcd xhs on gd.gd_id=xhs.mch_id
group by xhs.mch_id
order by fav_count desc
limit 1
select sum(case when right(card1,1)=right(card2,1) then 1 else 0 end)/2 cnt, count(*)/2 ttl_cnt, round((sum(case when right(card1,1)=right(card2,1) then 1 else 0 end)/2)/(count(*)/2),3) p
from hand_permutations
select kl1.live_id, kl2.live_nm,count(*) enter_cnt
from ks_live_t1 kl1 join ks_live_t2 kl2 using(live_id)
where date(kl1.enter_time)='2021-09-12' and hour(kl1.enter_time)=23
group by kl1.live_id,kl2.live_nm
order by count(*) desc
limit 5