[英]MySQL SUM of a COUNT with GROUP BY clause
我想SUM
的COUNT
查询,如下所示。 此查询为每行正确返回计数(1),但不确定如何将它们全部添加。
SELECT COUNT(*), jss_orders_headers.* FROM jss_orders_headers
LEFT JOIN jss_orders_extrafields
ON jss_orders_headers.orderID = jss_orders_extrafields.orderID
AND jss_orders_extrafields.extraFieldID = 5
GROUP BY jss_orders_headers.orderID
ORDER BY jss_orders_headers.orderID DESC
表结构是
orderID等
exid,orderID,extrafieldID,extrafieldName,content
目前返回的数据如下:
1 | 99
1 | 104
1 | 106
我需要返回COUNT()
列的SUM
。 所以在上面的3个例子中,我将返回3
。
非常感谢
你的问题不是很清楚,但如果你只想要所有orders
的sum()
,那么你应该可以使用这样的东西:
select sum(TotalByOrder) TotalOrders
from
(
SELECT COUNT(*) TotalByOrder, jss_orders_headers.*
FROM jss_orders_headers
LEFT JOIN jss_orders_extrafields
ON jss_orders_headers.orderID = jss_orders_extrafields.orderID
AND jss_orders_extrafields.extraFieldID = 5
GROUP BY jss_orders_headers.orderID
) src
WITH ROLLUP
做你需要的吗?
SELECT COUNT(*), jss_orders_headers.* FROM jss_orders_headers
LEFT JOIN jss_orders_extrafields
ON jss_orders_headers.orderID = jss_orders_extrafields.orderID
AND jss_orders_extrafields.extraFieldID = 5
GROUP BY jss_orders_headers.orderID DESC WITH ROLLUP
为什么没有ORDER BY
?
使用ROLLUP时,不能使用ORDER BY子句对结果进行排序。 换句话说,ROLLUP和ORDER BY是互斥的。 但是 ,您仍然可以控制排序顺序。 MySQL中的GROUP BY对结果进行排序,您可以使用显式ASC和DESC关键字与GROUP BY列表中指定的列来指定各列的排序顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.