問題文
問題
**同じ都市(city)に住む顧客の組み合わせ(ペア)**を出力してください。
(Alice, Carol) と (Carol, Alice) は同じペアなので、名前が辞書順で前の人を customer_a、後の人を customer_b として1回だけ出します。
並び順は、都市の昇順・customer_a の昇順・customer_b の昇順とします。
出力する列は次の3つ、この順序・この列名で出してください:
| 列名 | 内容 |
|---|---|
city | 都市 |
customer_a | ペアの一方(名前が前) |
customer_b | ペアのもう一方(名前が後) |
ヒントを見る
同じテーブルを2回使う「自己結合」です。customers a JOIN customers b として、
a.city = b.city で同じ都市どうしを結びます。
同じ人どうし・逆順の重複を避けるため、結合条件に a.name < b.name を加えます。
スキーマ
使用データベース:PostgreSQL 16customers5 行
| id | name | city |
|---|---|---|
| 1 | Alice | Tokyo |
| 2 | Bob | Osaka |
| 3 | Carol | Tokyo |
| 4 | Dave | Nagoya |
| 5 | Eve | Osaka |
products6 行
| id | name | category | price |
|---|---|---|---|
| 1 | Keyboard | Peripheral | 3000 |
| 2 | Mouse | Peripheral | 1500 |
| 3 | Monitor | Display | 20000 |
| 4 | Cable | Accessory | 500 |
| 5 | Webcam | Peripheral | 4000 |
| 6 | Desk | Furniture | 15000 |
orders6 行
| id | customer_id | order_date |
|---|---|---|
| 1 | 1 | 2024-01-10 |
| 2 | 1 | 2024-02-15 |
| 3 | 2 | 2024-01-20 |
| 4 | 3 | 2024-03-05 |
| 5 | 2 | 2024-03-22 |
| 6 | 4 | 2024-02-28 |
order_items11 行
| id | order_id | product_id | quantity |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
| 3 | 2 | 3 | 1 |
| 4 | 3 | 2 | 1 |
| 5 | 3 | 4 | 3 |
| 6 | 4 | 1 | 2 |
| 7 | 4 | 5 | 1 |
| 8 | 5 | 3 | 1 |
| 9 | 5 | 4 | 2 |
| 10 | 6 | 2 | 1 |
| 11 | 6 | 5 | 2 |
SQL
⌘⏎ / Ctrl+Enter で実行「実行」を押すと、ここにSQLの実行結果が表示されます。