2

customer_id で関連付けられた CUSTOMERS と ORDERS のテーブルがあります。各顧客が行った注文数のカウントを取得したいだけです。この例sqlfiddleで成功しまし た。

ただし、レコードセットが大きいため、最近その数が変更された顧客に限定して、各顧客のレコードの総数を取得したいだけです。考えられる解決策の 1 つは、過去 30 日間に注文したすべての顧客をリストし、これまでに注文した合計数をリストすることです。

私はこの他の SQL フィドルで 1 つのアプローチを試みました。上位 3 人の顧客とその合計注文数を注文日順に並べ替えて選択しようとしています。これは機能せず、切り捨てられた期間内に各顧客が行った注文数のみを表示します。

4

2 に答える 2

1

SELECT TOP (3)と と少し混乱していると思いますORDER BY

WHERE追加の句を使用して最初のクエリを実行します。

SELECT customer_id, COUNT(order_id) AS num_orders 
FROM Customers 
LEFT JOIN Orders ON (customer_id = cust_id) 
WHERE order_date > DATE() - 30 // or desired equivalent
GROUP BY customer_id;

編集

あなたの最新のコメントによると...

SELECT customer_id, COUNT(order_id) AS num_orders 
FROM Customers 
LEFT JOIN Orders ON (customer_id = cust_id) 
WHERE customer_id IN(SELECT TOP (3) [cust_id] FROM Orders ORDER BY [order_date] DESC)
GROUP BY customer_id

SQL フィドル

これにより、最新の 3 つの注文の ID が選択され、関連する各顧客の合計注文数が返されます。

于 2013-05-30T16:41:26.530 に答える