0

サンプル データベース Northwind を使用して、Toad for mySQL で SQL の練習を行っています。

このクエリの目標は、各月の上位 3 人の顧客を取得することです。一番上の意味は、彼らが最も多くのお金を費やしたことを意味します。各顧客のすべての支出でテーブルと結果を結合できましたが、各月のトップを取得できません。

これはこれまでの私のクエリです:

SELECT EXTRACT(MONTH FROM orders.OrderDate) AS `Month`,
orders.CustomerID,`order details`.OrderID, 
ROUND(SUM((`order details`.UnitPrice * `order details`.Quantity)*(1 - `order details`.Discount)),2) AS Cost
FROM `order details`
LEFT JOIN orders ON orders.OrderID = `order details`.OrderID
RIGHT JOIN customers ON customers.CustomerID = orders.CustomerID
GROUP BY orders.OrderID, orders.CustomerID, `Month`
ORDER BY Month DESC
LIMIT 3;

毎月インクリメントするためにある種のループが必要かもしれないような気がしますが、その形式はわかりませんが、実際の解決策は何でしょうか?

4

1 に答える 1

0

for month in 6 5 4 ; do mysql -u root database_name -BNe "SELECT '"$month"' AS Month,orders.CustomerID, order_details.OrderID, ROUND(SUM((order_details.UnitPrice * order_details.Quantity)*(1 - order_details.Discount)),2) AS Cost FROM order_details LEFT JOIN orders ON orders.OrderID = order_details.OrderID RIGHT JOIN customers ON customers.CustomerID = orders.CustomerID where EXTRACT(MONTH FROM orders.OrderDate)=$month GROUP BY Month,orders.OrderID, orders.CustomerID ORDER BY Month DESC ,Cost Desc limit 3"; done

于 2015-07-01T08:53:00.220 に答える