表结构如下图,如何获得用户620118508,当前季度的city_count的求和,

image.pngimage.pngimage.png

image.png如图的sql求出的是季度,和所有月份的city_count总和,如何group by 获取当前季度的city_count总和为15

FineReport 小气球123 发布于 2021-8-26 16:56 (编辑于 2021-8-27 11:16)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
axingLv6专家互助
发布于2022-3-8 23:23

直接使用月份除以3向上求整,就可以分类季度了

由于month是yyyyMM格式,先通过substr截取后面两位

select ceil(substr(month,-1,2)/3) as qtr,sum(city_count) as cunt 

from table 

where employee_id='620118508'

and ceil(substr(month,-1,2)/3=ceil(substr(sysdate,6,2)/3)

group by ceil(substr(month,-1,2)/3

最佳回答
0
krystal033Lv7高级互助
发布于2021-8-26 17:00

自己定义一下季度吧 用case when  然后在根据季度求和

最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-8-26 17:04

在month字段的值后面加个01拼成年月日,然后to_char(新month,'q')=to_char(sysdate,'q').有可能新month拼接01后需要先转成标准日期格式再获取对应季度。

PS:看语法不是ms sql,其它数据库不熟,只提供思路

最佳回答
0
用户h1332938Lv2见习互助
发布于2021-8-26 17:38(编辑于 2021-8-27 15:55)

select count(city_count) from 表名

where employee_id = '620118508' --用户

and quarter(date_format(concat(month,'01'),'%Y-%m-%d'))= quarter(CURDATE()) --当前季度

group by quarter(date_format(concat(month,'01'),'%Y-%m-%d')) --按季度整合

希望能帮助到你,如果时间格式不对,可以转一下再处理:quarter(date_format(concat(month,'01'),'%Y-%m-%d'))

  • 小气球123 小气球123(提问者) month字段是202108这种,quater(month)就会报错,有没有什么办法呢
    2021-08-26 17:49 
  • 无风无雪一杯酒 无风无雪一杯酒 回复 小气球123(提问者) month是什么格式?是char字符串类型还是日期类型?
    2021-08-26 17:52 
  • 小气球123 小气球123(提问者) 回复 无风无雪一壶酒 数值型的,就是到月的例如:202108这样的数据类型
    2021-08-26 17:54 
  • 无风无雪一壶酒 无风无雪一壶酒 回复 小气球123(提问者) select count(city_count) from 表名 where employee_id = \'620118508\' --用户 and quarter(date_format(concat(month,\'01\'),\'%Y-%m-%d\')) = quarter(CURDATE()) --当前季度 group by quarter(month) --按季度整合 你的格式是年月,而函数quarter是需要年月日的,所以需要强转默认为月份第一天,然后获取季度值,也就是这一段quarter(date_format(concat(month,\'01\'),\'%Y-%m-%d\'))
    2021-08-26 18:25 
  • 无风无雪一壶酒 无风无雪一壶酒 回复 小气球123(提问者) 回复会有乱码,我把原答案改了,你可以试下
    2021-08-26 18:31 
  • 4关注人数
  • 447浏览人数
  • 最后回答于:2022-3-8 23:23
    请选择关闭问题的原因
    确定 取消
    返回顶部