Sql 如何修改此脚本以获得每3分钟的计数?
我需要修改此查询以每3分钟(即09:00-09:02和09:03-09:06)获得一次结果 下面的查询给出每1分钟的输出计数:Sql 如何修改此脚本以获得每3分钟的计数?,sql,oracle,Sql,Oracle,我需要修改此查询以每3分钟(即09:00-09:02和09:03-09:06)获得一次结果 下面的查询给出每1分钟的输出计数: select TO_CHAR(ECH.CH_VALIDFROM,'mm/dd/yyyy hh24:mi'), count(1) count from emcdu.ext_contract_history ech where ch_status='a' and CH_VALIDFROM BETWEEN TO_DATE('21/11/2018 09:00:00','dd/
select TO_CHAR(ECH.CH_VALIDFROM,'mm/dd/yyyy hh24:mi'), count(1) count
from emcdu.ext_contract_history ech
where ch_status='a' and CH_VALIDFROM BETWEEN TO_DATE('21/11/2018
09:00:00','dd/mm/yyyy hh24:mi:ss')
AND TO_DATE ('21/11/2018 09:06:00','dd/mm/yyyy hh24:mi:ss')--and
ECH.CHANNEL='DSP'
and ch_validfrom=(select min(CH_VALIDFROM) from emcdu.ext_contract_history
where co_id=ech.co_id and ch_status='a')
group by channel, TO_CHAR(ECH.CH_VALIDFROM,'mm/dd/yyyy hh24:mi') ORDER BY
TO_CHAR(ECH.CH_VALIDFROM,'mm/dd/yyyy hh24:mi') ASC;
上述查询的输出:
TO_CHAR(ECH.CH_VALIDFROM,'mm/dd/yyyy hh24:mi') COUNT
11/21/2018 09:00 1
11/21/2018 09:01 2
11/21/2018 09:02 1
11/21/2018 09:03 1
11/21/2018 09:05 1
你可以在下面试试
select trunc(ECH.CH_VALIDFROM, 'mi') - 1/24/60 * mod(extract (minute from cast(ECH.CH_VALIDFROM as timestamp), 3), count(1) count
from emcdu.ext_contract_history ech
where ch_status='a' and CH_VALIDFROM BETWEEN TO_DATE('21/11/2018
09:00:00','dd/mm/yyyy hh24:mi:ss')
AND TO_DATE ('21/11/2018 09:06:00','dd/mm/yyyy hh24:mi:ss')--and
ECH.CHANNEL='DSP'
and ch_validfrom=(select min(CH_VALIDFROM) from emcdu.ext_contract_history
where co_id=ech.co_id and ch_status='a')
group by channel, trunc(ECH.CH_VALIDFROM, 'mi') - 1/24/60 * mod(extract (minute from cast(ECH.CH_VALIDFROM as timestamp)), 3)
ORDER BY
trunc(ECH.CH_VALIDFROM, 'mi') - 1/24/60 * mod(extract (minute from cast(ECH.CH_VALIDFROM as timestamp)), 3) ASC;
您好@fa06,谢谢您的回答,但我得到以下错误:ORA-30076:提取字段无效source@Pawan,我再次编辑了它-你可以在这里查看-这是演示-
select trunc(ECH.CH_VALIDFROM, 'mi') - 1/24/60 * mod(extract (minute from
cast(ECH.CH_VALIDFROM as timestamp), 3), count(1) count
from emcdu.ext_contract_history ech
where ch_status='a' and CH_VALIDFROM BETWEEN TO_DATE('21/11/2018
09:00:00','dd/mm/yyyy hh24:mi:ss')
AND TO_DATE ('21/11/2018 09:06:00','dd/mm/yyyy hh24:mi:ss')--and
ECH.CHANNEL='DSP'
and ch_validfrom=(select min(CH_VALIDFROM) from emcdu.ext_contract_history
where co_id=ech.co_id and ch_status='a')
group by channel, trunc(ECH.CH_VALIDFROM, 'mi') - 1/24/60 * mod(extract (minute from
cast(ECH.CH_VALIDFROM as timestamp)), 3)
ORDER BY
trunc(ECH.CH_VALIDFROM, 'mi') - 1/24/60 * mod(extract (minute from
cast(ECH.CH_VALIDFROM as timestamp)), 3) ASC;