以下の3列のテーブルがあります
| Category | Author | Sales |
+++++++++++++++++++++++++++++++++++++++
| NW | account-1 | 10 |
| NW | account-2 | 20 |
| NW | account-3 | 30 |
| S | account-4 | 10 |
| S | account-5 | 50 |
| S | account-6 | 55 |
各カテゴリの最大値を持つ別のテーブルを作成したいのですが、目的のテーブルは次のようになります。
| Category | Author | Sales |
+++++++++++++++++++++++++++++++++++++++
| NW | account-3 | 30 |
| S | account-6 | 55 |
私のコーディングトライアル、
SELECT Category, Author, MAX(Sales)
FROM table
GROUP BY Category, Author
MAX()
集計が失敗する理由がわかりません(上記のコード)。誰かが理由を詳細に説明し、シンプルで効率的なソリューションを提供していただければ幸いです。
質問に対処するには、サブクエリが必要です。
説明:max(Sales)で元のクエリをフィルタリングしないため、現在のソリューションは機能しませんが、「このカテゴリの最大売上高はいくつですか?」と尋ねるだけです。したがって、別のサブクエリが必要です。
次のコードが機能するはずです。
SELECT tbl_sales.Category, tbl_sales.Author, tbl_sales.Sales
FROM tbl_sales
JOIN(
SELECT Category, MAX(Sales) MaxSales
FROM tbl_sales
GROUP BY Category
) tbl_maxsales
ON tbl_sales.Sales = tbl_maxsales.MaxSales
あなたは見つけることができ、ここでSQLフィドル実装を。
(MySQL 5.6を想定しましたが、これは大きな役割を果たさないはずです)
ご不明な点がある場合や、さらにガイダンスが必要な場合は、遠慮なくメッセージを送信するか、コメントを残してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加