首页 > 解决方案 > SQL - 使用别名/数学计算/在哪里分组

问题描述

我在使用列中的别名进行 SQL 查询并将别名与 group by 一起使用时遇到问题。我的理解是 group by 在创建选择列别名之前得到处理。我尝试使用子组,但我似乎无法获得正确的语法。对于这两个查询,我都收到“ORA-00933:SQL 命令未正确结束”。我正在使用 python 格式函数来插入诸如 epoch date int 之类的值。我可以获得语法方面的帮助吗?

最初的尝试

  SELECT
                    SUM(wall_clock_time) AS workToBeDone,
                    FLOOR((event_time-{fromTs})/{interval}) as period
                FROM {table}
                WHERE submit_time >= {fromTs} AND event_time < {untilTs}
                GROUP BY period
                ORDER BY period

子组尝试

           SELECT
                SUM(wall_clock_time) AS workToBeDone,
                period
            FROM
              (
              SELECT
                wall_clock_time,
                (SELECT FLOOR((event_time-{fromTs})/{interval}) FROM {table} WHERE submit_time >= {fromTs} AND event_time < {untilTs}) as period
              FROM
                {table}
              WHERE submit_time >= {fromTs} AND event_time < {untilTs}) AS period
              ) AS inline
            GROUP BY period
            ORDER BY period;

标签: sqloracle

解决方案


我不确定这个查询中的日期是如何传递的,所以我使用实际值来显示查询。

SELECT SUM(workToBeDone) AS workToBeDone,
PERIOD 
FROM
(SELECT
   wall_clock_time AS workToBeDone,
   FLOOR((event_time- to_date('10-oct-2019','dd-mon-yyyy'))/10) as period
FROM {table}
WHERE submit_time >= to_date('10-oct-2019','dd-mon-yyyy')
AND event_time < to_date('10-oct-2019','dd-mon-yyyy'))
GROUP BY PERIOD
ORDER BY PERIOD;

我希望wall_clock_time不是日期数据类型列。

干杯!!


推荐阅读