按日期间隔分组Oracle

j

我想从一个表中检索整个月的重量数据总和。我需要帮助的是,我希望将结果分为两个部分,分别是本月1-15和本月第二行16-31。

SELECT(SUM(B.SCALE_WEIGHT) FROM TRACKING.DATALOG_TAB B WHERE B.MATERIALID= 1 AND B.SCALE_EVENTDATE BETWEEN TO_DATE(TRUNC(TO_DATE('2020-10-1', 'YYYY-MM-DD'),'MONTH')) AND TO_DATE(TRUNC(TO_DATE('2020-10-1', 'YYYY-MM-DD'), 'MONTH')+30)
GROUP BY(somthing like this - 1-15  and 16-31)
专线小巴

这是一个选择:

select
    1 + floor(extract(day from scale_eventdate) / 16) as fortnight,
    sum(b.scale_weight) as sum_scale_weight
from tracking.datalog_tab b 
where 
    materialid = 1 
    and scale_eventdate >= date '2020-10-01'
    and scale_eventdate <  date '2020-11-01'
group by 1 + floor(extract(day from scale_eventdate) / 16)

这将从日期中提取天数,然后使用算术:包括的月份中的1到15日中的每一天都去掉fortnightnumber 1,之后的所有东西都去掉bucket 2

我们还可以使用to_char()和一个case表达式来做到这一点,表达式更具表现力:

select
    case when to_char(scale_eventdate, 'dd') <= '15' then 1 else 2 end as fortnight,
    sum(b.scale_weight) as sum_scale_weight
from tracking.datalog_tab b 
where 
    materialid = 1 
    and scale_eventdate >= date '2020-10-01'
    and scale_eventdate <  date '2020-11-01'
group by case when to_char(scale_eventdate, 'dd') <= '15' then 1 else 2 end

请注意,我将日期过滤逻辑更改为使用标准日期文字,这使查询更短且更具可读性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDB按日期间隔分组

来自分类Dev

如何在两列中按日期间隔分组?

来自分类Dev

将日期间隔按其开始时间和结束时间进行分组

来自分类Dev

按 DATETIME 获取数据、计数和分组,其中日期间隔大于 X

来自分类Dev

按日期间隔插入N行

来自分类Dev

SQL,按日期间隔查询

来自分类Dev

按日期间隔插入N行

来自分类Dev

从时间间隔中提取按日期分组的日期范围

来自分类Dev

按组r填写缺少的日期间隔

来自分类Dev

按 R 中的日期间隔聚合结果

来自分类Dev

如何按日期间隔对数据进行分区?

来自分类Dev

日期间隔内%%

来自分类Dev

在特定时间间隔内按日期分组

来自分类Dev

Oracle总和按日期范围分组

来自分类Dev

Oracle按客户和日期分组

来自分类Dev

Oracle按客户和日期分组

来自分类Dev

Oracle总和按日期范围分组

来自分类Dev

确定连续的日期间隔

来自分类Dev

MySQL日期间隔选择

来自分类Dev

SQL查找日期间隔

来自分类Dev

按小时间隔分组

来自分类Dev

按日期范围内的日期汇总数据,结果集中没有日期间隔

来自分类Dev

R - 日期间隔和日期行数

来自分类Dev

Oracle中的“按日分组”似乎没有按日期分组

来自分类Dev

分组日期时间的期间列表

来自分类Dev

使用熊猫按给定的时间间隔对日期进行分组和处理

来自分类Dev

Laravel按日期分组

来自分类Dev

按日期分组对象

来自分类Dev

按日期分组NSDictionary