前三个月的值的总和

八分之一

我很难从12月(上个月第3月开始的任何时间获取行我正在尝试计算在一定时期内销售的产品数量。这是我当前的查询:

 SELECT
   a.id,
   a.default_code,
(
   SELECT SUM(product_uom_qty) 
   AS 
   "Total Sold" 
   FROM 
   sale_order_line c 
   WHERE 
   c.product_id = a.id
),
(
   SELECT SUM(product_uom_qty) 
   AS 
   "Month 3" 
   FROM sale_order_line c 
   WHERE
   c.product_id = a.id
   AND 
   MONTH(c.create_date) = MONTH(CURRENT_DATE - INTERVAL '3 Months')
   AND
   YEAR(c.create_date) = YEAR(CURRENT_DATE - INTERVAL '3 Months')
)
FROM
   product_product a 

这是数据库的样子:

sale_order_line

product_id product_uom_qty  create_date
33         230              2014-07-01 16:47:45.294313

product_product

id  default_code 
33  WHDXEB33

这是我收到的错误:

ERROR:  function month(timestamp without time zone) does not exist
LINE 21:    MONTH(c.create_date) = MONTH(CURRENT_DATE - INTERVAL

有什么帮助我指出正确的方向吗?

欧文·布兰德斯特

使用date_trunc()计算时间戳记范围:

SELECT id, default_code
    , (SELECT SUM(product_uom_qty)
        FROM   sale_order_line c 
        WHERE  c.product_id = a.id
       ) AS "Total Sold" 
    , (SELECT SUM(product_uom_qty)
        FROM   sale_order_line c 
        WHERE  c.product_id = a.id
        AND    c.create_date >= date_trunc('month', now()) - interval '2 month'
        AND    c.create_date <  date_trunc('month', now()) - interval '1 month'
      ) AS "Month 3"
FROM   product_product a;

要获得十二月(现在是二月),请使用以下表达式:

    AND    c.create_date >= date_trunc('month', now()) - interval '2 month'
    AND    c.create_date <  date_trunc('month', now()) - interval '1 month'

date_trunc('month', now())产生'2015-02-01 00:00',减去2个月后,您得到'2014-12-01 00:00'。因此,“ 3个月”可能是骗人的。

另外,请确保使用如所示的可扩展表达式,以提高性能并允许使用索引。

备择方案

根据您实际的数据库设计和数据分配,这可能会更快:

SELECT a.id, a.default_code, c."Total Sold", c."Month 3"
FROM   product_product a
LEFT  JOIN (
   SELECT product_id AS id
        , SUM(product_uom_qty) AS "Total Sold"
        , SUM(CASE WHEN c.create_date >= date_trunc('month', now()) - interval '2 month'
                   AND  c.create_date <  date_trunc('month', now()) - interval '1 month'
              THEN product_uom_qty ELSE 0 END) AS "Month 3" 
   FROM   sale_order_line
   GROUP  BY 1
   ) c USING (id);

由于选择了所有行,因此这可能比相关子查询快。虽然是吧,总之前你的加盟,这是更便宜,但。
当选择单个或几个产品,这实际上可能较慢,但!比较:

或者使用FILTERPostgres 9.4+中子句

...
        , SUM(product_uom_qty) 
             FILTER (WHERE c.create_date >= date_trunc('month', now()) - interval '2 month'
                     AND   c.create_date <  date_trunc('month', now()) - interval '1 month'
                    ) AS "Month 3"
...

细节:

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按三个月分组

来自分类Dev

尝试获取最近三个月的数据

来自分类Dev

根据最近三个月的销售额计算不同的客户

来自分类Dev

Oracle:需要计算过去三个月的滚动平均值,其中我们每个月有多个提交

来自分类Dev

动态获取最近三个月

来自分类Dev

将年月字符串转换为带有间隔的三个月垃圾箱-如何分配连续的升序值?

来自分类Dev

SQL获取本月前三个月的月份的第一天

来自分类Dev

如何从输入的月份年份中获取上一个月的第三个月?

来自分类Dev

此数据集最近三个月的总计数是多少?

来自分类Dev

PowerBI DAX:前三个月的日期期限标识公式发布

来自分类Dev

Pyspark:每个月累计前三个月的总和

来自分类Dev

如何对一个数据帧进行三个月的平均值,并使用这些值构建一个新的?

来自分类Dev

用户使用Twitter API如何获取最近三个月以来的推文

来自分类Dev

按三个月分组

来自分类Dev

如何在当前月份的下三个月的列表视图中显示计划金额

来自分类Dev

PHP检查两个日期是否至少相差三个月

来自分类Dev

SQL最近三个月

来自分类Dev

如何查看“存档”的Google Chrome浏览器历史记录,即超过三个月的历史记录?

来自分类Dev

获取最近三个月按商店销售的发票数

来自分类Dev

用Java计算每三个月的第三个星期一?

来自分类Dev

过去三个月在mdx查询中的最小值

来自分类Dev

如何在单个查询中获取最近三个月的数据

来自分类Dev

如何从输入的月份年份中获取上一个月的第三个月?

来自分类Dev

如何获取SQL Server中前三个月的日期列?

来自分类Dev

如果年份存在,则即使在某个月份不存在帐单,也要填充四个三个月

来自分类Dev

如何从日期参数中选择过去三个月的数据

来自分类Dev

三个月内每五个月滚动一次

来自分类Dev

java - 如何根据当前日期(包括Java中的当前日期)获取过去三个月的第一个日期和最后一个日期?

来自分类Dev

每三个月自动编辑查询 MySQL 的 WHERE 条件

Related 相关文章

  1. 1

    按三个月分组

  2. 2

    尝试获取最近三个月的数据

  3. 3

    根据最近三个月的销售额计算不同的客户

  4. 4

    Oracle:需要计算过去三个月的滚动平均值,其中我们每个月有多个提交

  5. 5

    动态获取最近三个月

  6. 6

    将年月字符串转换为带有间隔的三个月垃圾箱-如何分配连续的升序值?

  7. 7

    SQL获取本月前三个月的月份的第一天

  8. 8

    如何从输入的月份年份中获取上一个月的第三个月?

  9. 9

    此数据集最近三个月的总计数是多少?

  10. 10

    PowerBI DAX:前三个月的日期期限标识公式发布

  11. 11

    Pyspark:每个月累计前三个月的总和

  12. 12

    如何对一个数据帧进行三个月的平均值,并使用这些值构建一个新的?

  13. 13

    用户使用Twitter API如何获取最近三个月以来的推文

  14. 14

    按三个月分组

  15. 15

    如何在当前月份的下三个月的列表视图中显示计划金额

  16. 16

    PHP检查两个日期是否至少相差三个月

  17. 17

    SQL最近三个月

  18. 18

    如何查看“存档”的Google Chrome浏览器历史记录,即超过三个月的历史记录?

  19. 19

    获取最近三个月按商店销售的发票数

  20. 20

    用Java计算每三个月的第三个星期一?

  21. 21

    过去三个月在mdx查询中的最小值

  22. 22

    如何在单个查询中获取最近三个月的数据

  23. 23

    如何从输入的月份年份中获取上一个月的第三个月?

  24. 24

    如何获取SQL Server中前三个月的日期列?

  25. 25

    如果年份存在,则即使在某个月份不存在帐单,也要填充四个三个月

  26. 26

    如何从日期参数中选择过去三个月的数据

  27. 27

    三个月内每五个月滚动一次

  28. 28

    java - 如何根据当前日期(包括Java中的当前日期)获取过去三个月的第一个日期和最后一个日期?

  29. 29

    每三个月自动编辑查询 MySQL 的 WHERE 条件

热门标签

归档