使用SUM GROUP BY获取行总数

时间:2018-06-20 10:12:02

标签: mysql database

我正在尝试从SUMGROUP BY查询中获取小计的总数。

这是我到目前为止的查询:

  SELECT SUM(opportunite_montant_ht)*(stade_pourcentage/100) 
      As subtotal
    FROM opportunite O 
    JOIN opportunite_stade OS 
      ON O.opportunite_stade=OS.stade_id
GROUP BY stade_id

结果:

subtotal

35100.0000

330.0000

现在如何通过查询仅获取这些小计的总数?

3 个答案:

答案 0 :(得分:2)

这应该有效:

select sum(subtotal) from (SELECT SUM(opportunite_montant_ht)*(stade_pourcentage/100) as subtotal
FROM opportunite O JOIN opportunite_stade OS ON O.opportunite_stade=OS.stade_id
GROUP BY stade_id) as query

答案 1 :(得分:1)

您可以使用WITH ROLLUP来获取每个stade_id和总计的小计:

SELECT stade_id, SUM(opportunite_montant_ht * stade_pourcentage/100) as subtotal
FROM opportunite O 
JOIN opportunite_stade OS
  ON O.opportunite_stade=OS.stade_id
GROUP BY stade_id WITH ROLLUP;

输出如下:

+----------+------------+
| stade_id |  subtotal  |
+----------+------------+
| 1        | 35100.0000 |
| 2        |   330.0000 |
| NULL     | 35430.0000 |
+----------+------------+

编辑:

  

实际上是可行的,尽管我试图只获取总数,而不是全部小计

然后使用最简单的解决方案-删除GROUP BY

SELECT SUM(opportunite_montant_ht*stade_pourcentage/100) AS total
FROM opportunite O JOIN opportunite_stade OS ON O.opportunite_stade=OS.stade_id

答案 2 :(得分:0)

使用额外的SUM

SELECT SUM(SUM(opportunite_montant_ht)*(stade_pourcentage/100)) AS subtotal
FROM opportunite O 
JOIN opportunite_stade OS ON O.opportunite_stade= OS.stade_id
GROUP BY stade_id

OR:

SELECT SUM(SELECT SUM(opportunite_montant_ht)*(stade_pourcentage/100) as subtotal
FROM opportunite O JOIN opportunite_stade OS ON O.opportunite_stade=OS.stade_id
GROUP BY stade_id)
FROM dual