クエリの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とORDERBYは相互に排他的です。 ただし、ソート順は引き続きある程度制御できます。 MySQLのGROUPBYは結果を並べ替えます。また、GROUP BYリストで指定された列で明示的なASCおよびDESCキーワードを使用して、個々の列の並べ替え順序を指定できます。