具有GROUP BY子句的COUNT的MySQL SUM

Jee*_*one 9 mysql group-by sum count

我想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
Run Code Online (Sandbox Code Playgroud)

表结构是

jss_order_headers

orderID等

jss_order_extrafields

exid,orderID,extrafieldID,extrafieldName,content

目前返回的数据如下:

COUNT()| orderID | 等等

1 | 99

1 | 104

1 | 106

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

非常感谢

Tar*_*ryn 19

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

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
Run Code Online (Sandbox Code Playgroud)

  • @Jeepstone一些数据库需要在子查询和派生表上使用别名,MySQL就是这样做的. (3认同)

Dav*_* S. 7

请问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
Run Code Online (Sandbox Code Playgroud)

为什么没有ORDER BY

使用ROLLUP时,也不能使用ORDER BY子句对结果进行排序。换句话说,ROLLUP和ORDER BY是互斥的。但是,您仍然可以控制排序顺序。MySQL中的GROUP BY对结果进行排序,您可以对在GROUP BY列表中命名的列使用显式的ASC和DESC关键字,以指定各个列的排序顺序。