SQL日周月取数

要做一个时间趋势图,统计指标是店数和评分数。

时间分类:日 取每天的日期;周,取当前周第一天;月,当前月初的一天。

统计指标:店数和评分数,日,展示每天的店数和评分数;周,展示当前周日的评分数和店数;月,展示所在月最后一天的评分数和店数。

请教一个sql怎么写?用一个数据集展示日周月数据

select 

date_format(part_dt,'%Y-%m-%d') as part_dt,

date_sub(part_dt,INTERVAL WEEKDAY(part_dt)  DAY) as part_dt_W, --当前week的第一天

DATE_ADD(part_dt,interval -day(part_dt)+1 day) as part_dt_M, -----当前月的月初一天

store_code(怎么取到周月的店数),

store_score(怎么取到周月的分数)

from ads_platform_store_day  

where 1=1 

${IF(frequency="1","AND part_dt >= '"+format(dateinweek(endDate,1),'yyyyMMdd')+"' AND part_dt<= '"+format(endDate,'yyyyMMdd')+"'" ,

IF(frequency="2","AND part_dt >= '"+format(datedelta(endDate,-42),'yyyyMMdd')+"' AND part_dt<= '"+format(endDate,'yyyyMMdd')+"'",

IF(frequency="3","AND part_dt >= '"+format(monthdelta(endDate,-13),'yyyyMMdd')+"' AND part_dt<= '"+format(endDate,'yyyyMMdd')+"'"

,"")))}

and store_code in ( '${store_code}')

用户N0188713 发布于 2022-5-11 10:51
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-5-11 11:09

SELECT T.store_code,${IF(frequency=="1",part_dt,IF(frequency=="2",part_dt_W,part_dt_M))} [周期],COUNT(store_code) [店数],AVG(store_score) [店平均分] FROM (

select 

date_format(part_dt,'%Y-%m-%d') as part_dt,

date_sub(part_dt,INTERVAL WEEKDAY(part_dt)  DAY) as part_dt_W, --当前week的第一天

DATE_ADD(part_dt,interval -day(part_dt)+1 day) as part_dt_M, -----当前月的月初一天

store_code,

store_score

from ads_platform_store_day  

where 1=1 

${IF(frequency="1","AND part_dt >= '"+format(dateinweek(endDate,1),'yyyyMMdd')+"' AND part_dt<= '"+format(endDate,'yyyyMMdd')+"'" ,

IF(frequency="2","AND part_dt >= '"+format(datedelta(endDate,-42),'yyyyMMdd')+"' AND part_dt<= '"+format(endDate,'yyyyMMdd')+"'",

IF(frequency="3","AND part_dt >= '"+format(monthdelta(endDate,-13),'yyyyMMdd')+"' AND part_dt<= '"+format(endDate,'yyyyMMdd')+"'"

,"")))}

and store_code in ( '${store_code}')

) T GROUP BY T.store_code,${IF(frequency=="1",part_dt,IF(frequency=="2",part_dt_W,part_dt_M))}

最佳回答
0
shinger@126.comLv2见习互助
发布于2022-5-11 11:05

创建一个日历表,里面存放日期,月份,日,星期几,每周第一天和最后一天容易判断,每月最后一天提前在日历表中加个字段是否月末,每月第一天直接判断1号。然后用业务数据表关联日历表。

  • 2关注人数
  • 387浏览人数
  • 最后回答于:2022-5-11 11:09
    请选择关闭问题的原因
    确定 取消
    返回顶部