[解決済み] 各GROUP BYグループの最初の行を選択しますか?
2022-03-15 12:36:22
質問
でグループ化された各行の先頭行を選択したい。
GROUP BY
.
具体的には、もし私が
purchases
のようなテーブルがあります。
SELECT * FROM purchases;
私の出力
<テーブル
イド
顧客
合計
1
ジョー
5
2
サリー
3
3
ジョー
2
4
サリー
1
をクエリしたいのですが
id
の最大購入額(
total
)がそれぞれ
customer
. このようなものです。
SELECT FIRST(id), customer, FIRST(total)
FROM purchases
GROUP BY customer
ORDER BY total DESC;
期待される出力
<テーブル
FIRST(id)の場合
顧客
FIRST(合計)
1
ジョー
5
2
サリー
3
解決方法
データベースで CTEおよびウィンドウ関数に対応 :
WITH summary AS (
SELECT p.id,
p.customer,
p.total,
ROW_NUMBER() OVER(PARTITION BY p.customer
ORDER BY p.total DESC) AS rank
FROM PURCHASES p)
SELECT *
FROM summary
WHERE rank = 1
あらゆるデータベースに対応。
ただし、同点解消のためのロジックを追加する必要があります。
SELECT MIN(x.id), -- change to MAX if you want the highest
x.customer,
x.total
FROM PURCHASES x
JOIN (SELECT p.customer,
MAX(total) AS max_total
FROM PURCHASES p
GROUP BY p.customer) y ON y.customer = x.customer
AND y.max_total = x.total
GROUP BY x.customer, x.total
関連
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] 複数の列でgroup byを使用する
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] pandas GroupByを使ってグループごとの統計情報(カウント、平均値など)を取得する?
-
[解決済み】グループ化されたSQL結果の各グループで最大値を持つレコードを取得する
-
[解決済み] 各グループの最初の行を選択するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
[解決済み] ストアドプロシージャ 'dbo.aspnet_CheckSchemaVersion' が見つかりませんでした。
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL Server : 列を行に変換する
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?
-
[解決済み] SQL ServerでGROUP BYを使って文字列を連結する方法とは?