对子查询结果求和

nwnhqdif  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(500)

表格示例:

  1. | date_time | quantity
  2. -------------------------
  3. | 2017-08-12 09:11:51 | 1
  4. | 2017-08-12 10:12:51 | 1
  5. | 2017-08-12 12:45:51 | 1
  6. | 2017-08-13 11:12:51 | 1
  7. | 2017-08-13 11:12:51 | 1
  8. | 2017-08-13 12:45:51 | 1
  9. | 2017-08-13 13:57:51 | 1
  10. | 2017-08-14 14:23:51 | 1
  11. | 2017-08-14 16:34:51 | 1
  12. | 2017-08-15 16:21:51 | 1
  13. | 2017-08-16 14:31:51 | 1

我可以通过以下查询得到结果:

  1. SELECT DATE(date_time) as date_time
  2. ,SUM(quantity) as quantity
  3. FROM report
  4. WHERE date_time BETWEEN '' AND ''
  5. GROUP BY DATE(date_time)
  6. HAVING SUM(quantity) < 3

结果:

  1. | date_time | quantity
  2. -------------
  3. | 2017-08-14 | 2
  4. | 2017-08-15 | 1
  5. | 2017-08-16 | 1

我想以后再计算数量。例如:

  1. quantity
  2. ---------
  3. | 4

为了实现这一点,我知道我需要将结果用作子查询,以便随后求和。我试过了,但错了:

  1. SELECT SUM(topla) FROM (
  2. ( SELECT DATE(date_time) as date_time
  3. ,SUM(quantity) as quantity
  4. FROM report
  5. WHERE date_time BETWEEN '' AND ''
  6. GROUP BY DATE(date_time)
  7. HAVING SUM(quantity) < 3
  8. ) AS topla
  9. )

我怎样计算数量?

cuxqih21

cuxqih211#

只需将topla替换为quantity,并从topla之前的查询中删除'as topla'。

  1. SELECT SUM(quantity) total FROM (
  2. ( SELECT DATE(date_time) as date_time
  3. ,SUM(quantity) as quantity
  4. FROM report
  5. WHERE date_time BETWEEN '' AND ''
  6. GROUP BY DATE(date_time)
  7. HAVING total < 3
  8. )
  9. )

要使用sum函数,必须指定列名而不是表名。

8ulbf1ek

8ulbf1ek2#

首先,您必须按列名对数量求和(在这个例子中,我把它命名为sub(数量)
其次,您不需要选择日期。
所以你的问题可能是

  1. SELECT SUM(sub_quantity) AS quantity
  2. FROM
  3. ( SELECT SUM(quantity) AS sub_quantity
  4. FROM report
  5. WHERE date_time BETWEEN '' AND ''
  6. GROUP BY DATE(date_time)
  7. HAVING SUM(quantity) < 3) a

相关问题