具有GROUP BY子句的COUNT的MySQL SUM

时间:2013-02-14 16:59:28

标签: mysql count group-by sum

我希望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

表格结构

jss_order_headers

的orderID, 等

jss_order_extrafields

EXID, 单编号, extrafieldID, extrafieldName, 含量

目前返回的数据如下:

COUNT()| orderID |等

1 | 99

1 | 104

1 | 106

我需要返回SUM列的COUNT()。因此,在上面的3个示例中,我将返回3

非常感谢

2 个答案:

答案 0 :(得分:15)

您的问题不是很清楚,但如果您只想要所有sum()的{​​{1}},那么您应该可以使用以下内容:

orders

答案 1 :(得分:4)

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中的BY对结果进行排序,您可以使用显式ASC和DESC   在GROUP BY列表中命名的列的关键字,用于指定排序顺序   对于单个列。