我使用以下查询收集MySQL表中某些特定数据的SUM信息:
SELECT rowid,
id_name,
SUM(DISTINCT colA) AS colAtotal,
SUM(DISTINCT colB) AS colBtotal
FROM orders
我知道我可以在查询后将colAtotal和colBtotal与PHP一起添加,但我需要'总计'要在查询中按排序构建的列。
如何添加'(SUM(DISTINCT colA)为colAtotal,SUM(DISTINCT colB)为colBtotal)'在查询中一起,所以我将有另一列我的排序?
由于
答案 0 :(得分:1)
只需添加它们即可。
SELECT
SUM(DISTINCT colA) AS colAtotal,
SUM(DISTINCT colB) AS colBtotal,
SUM(DISTINCT colA) + SUM(DISTINCT colB) AS colAplusBtotal
FROM orders
如果您不需要,可以删除单独的金额
SELECT
SUM(DISTINCT colA) + SUM(DISTINCT colB) AS colAplusBtotal
FROM orders
或者如果你想按它排序:
只需添加它们即可。
SELECT
SUM(DISTINCT colA) AS colAtotal,
SUM(DISTINCT colB) AS colBtotal
FROM orders
ORDER BY
SUM(DISTINCT colA) + SUM(DISTINCT colB)
请注意,在ORDER BY中添加列别名时没有列别名。由于没有返回该字段,因此给它一个别名是没有意义的。
我删除了其他(非聚合)字段,因为您没有按他们分组。保留它们可能会让你感到困惑,因为它们基本上是随机值。
但请注意,DISTINCT
可能无法达到预期效果。如果colA和colB是金额,则此公式会累计所有不同的订单金额。因此,如果您有一百万个订单,但它们都恰好具有10或17的值,则此类sum
的结果将为27
,因为只会添加唯一值。
当然,我无法理解你的想法,但我希望你能找到这样的东西,以获得每位顾客的总金额:
SELECT
Customer,
SUM(colA) AS colAtotal,
SUM(colB) AS colBtotal
FROM orders
GROUP BY Customer
ORDER BY
SUM(colA) + SUM(colB)