我正在尝试从SUM
和GROUP 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
现在如何通过查询仅获取这些小计的总数?
答案 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