SQLで、「グループ毎」に「ある列の値」が「一番大きい行」だけ取り出す方法

使用頻度が結構多いのですが、どうしてこの書き方で結果が求められるのか、未だに理解できないSQLです。
書き方をすぐ忘れてしまうので、書き留めておきます。

◆サンプル

複数のホテルの、部屋番号毎の料金が登録されているテーブルがあります。
ホテル毎に、一番高い料金の部屋番号とその料金を抽出します。

SELECT
	[ホテル名],
	[部屋番号],
	[料金]
FROM
	部屋テーブル
WHERE
	([料金] >= ALL (
		SELECT
			[料金]
		FROM
			部屋テーブル AS t
		WHERE
			(部屋テーブル.[ホテル名] = t.[ホテル名])))

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です