Sql Oracle分组依据和日期精度
我有一个包含两个日期字段的表:Sql Oracle分组依据和日期精度,sql,oracle,date,group-by,Sql,Oracle,Date,Group By,我有一个包含两个日期字段的表:BEGIN\u date和END\u date 当我减去这两个字段时,我会得到一个以天为单位的数字。 我想要以秒为单位的这个数字,因为这两个字段之间的差异非常小(~1s)所以我继续做: SELECT ROUND(AVG((END_DATE-BEGIN_DATE)*3600*24),2) AS DELTA, TO_CHAR(BEGIN_DATE, 'yyyy-mm-dd hh24:mi:ss') AS DEB, TO_CHAR(END_D
BEGIN\u date
和END\u date
当我减去这两个字段时,我会得到一个以天为单位的数字。我想要以秒为单位的这个数字,因为这两个字段之间的差异非常小(~1s)
所以我继续做:
SELECT ROUND(AVG((END_DATE-BEGIN_DATE)*3600*24),2) AS DELTA,
TO_CHAR(BEGIN_DATE, 'yyyy-mm-dd hh24:mi:ss') AS DEB,
TO_CHAR(END_DATE, 'yyyy-mm-dd hh24:mi:ss') AS FIN
FROM MYTABLE
GROUP BY TO_CHAR(BEGIN_DATE, 'yyyy-mm-dd hh24:mi:ss'),
TO_CHAR(END_DATE, 'yyyy-mm-dd hh24:mi:ss');
以下是结果(与分组时间的精度相同):好。
然后,如果我按小时对结果进行分组,或按天对结果进行分组:
SELECT ROUND(AVG((END_DATE-BEGIN_DATE)*3600*24),2) AS DELTA,
TO_CHAR(BEGIN_DATE, 'yyyy-mm-dd hh24') AS DEB,
TO_CHAR(END_DATE, 'yyyy-mm-dd hh24') AS FIN
FROM MYTABLE
GROUP BY TO_CHAR(BEGIN_DATE, 'yyyy-mm-dd hh24'),
TO_CHAR(END_DATE, 'yyyy-mm-dd hh24');
我得到了这个结果:DELTA
精度更好,我不明白为什么!
有人能给我解释一下吗?我的错,别说了,问题相对简单 浮动结果由以下公式给出:总和(增量)/计数(分组行)。
因此,如果我在2015-11-02 19得到20个值。
其中9个值等于1,其余值等于0。
我们得到了9/20=0.45,这绝对符合逻辑。 我刚核实过
无论如何,谢谢你抽出时间。我的错,别说了,问题相对简单 浮动结果由以下公式给出:总和(增量)/计数(分组行)。
因此,如果我在2015-11-02 19得到20个值。
其中9个值等于1,其余值等于0。
我们得到了9/20=0.45,这绝对符合逻辑。 我刚核实过
无论如何,感谢您抽出时间。因为0和1的平均值是0.5?如果从SELECT中删除Deb和Fin列,该行为是否会继续?另外,nls_date_format参数的默认值是什么?因为0和1的平均值是0.5?如果从SELECT中删除列Deb和Fin,该行为是否继续?另外,nls_date_format参数的默认值是什么?