SQLの柔軟性は素晴らしいものですが、その代償としていくらでも複雑になり得ます。 • 複雑なSQLを理解するには、 ◦ フォーマットして可読性を上げ、 ◦ 英語の文を読む語順(SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY)でブロックを 把握し、 ▪ FROMに記述されているテーブルから、 ▪ WHEREに記述されている抽出条件に基づいてレコードを抽出し、 ▪ GROUP BYに指定されている集約キーでグルーピングし、 ▪ HAVINGに記述されている条件に基づいてグループを絞り込み、 ▪ ORDER BYに指定されているソートキーで並び替えて、 ▪ SELECTに指定されている列 ◦ を取得する。 • という流れで私は読んでいます。