繁体   English   中英

具有GROUP BY子句的COUNT的MySQL SUM

[英]MySQL SUM of a COUNT with GROUP BY clause

我想SUMCOUNT查询,如下所示。 此查询为每行正确返回计数(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,orderID,extrafieldID,extrafieldName,content

目前返回的数据如下:

COUNT()| orderID | 等等

1 | 99

1 | 104

1 | 106

我需要返回COUNT()列的SUM 所以在上面的3个例子中,我将返回3

非常感谢

你的问题不是很清楚,但如果你只想要所有orderssum() ,那么你应该可以使用这样的东西:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM