Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ GROUP BY句 | Grouping
中級SQL
セクション 1.  1
single

single

bookGROUP BY句

メニューを表示するにはスワイプしてください

Intermediate SQLコースへようこそ!

最初のセクションでは、テーブル内のデータをグループ化および集計する方法について学びます。

「データのグループ化」とは何かを、従業員テーブルの簡単な例を使って理解しましょう。

データのグループ化

各部門ごとの従業員数を調べるというタスクがあります。これを行うために、department列でデータをグループ化し、COUNT(*)関数を使って集計します。

実装例は次のようになります。

123
SELECT department, COUNT(*) AS number_of_employees FROM employees GROUP BY department
copy

ご覧のとおり、グループ化の構文は次のようになります。

SELECT column1, AGG_FUNC(column2)
FROM table
GROUP BY column1
Note
注意

AGG_FUNC は、MAXMINCOUNT などの集約関数を指します。

この構文は、特定の列に対して集約関数を使用して特定の値を取得するために存在します。

別の例を考えてみましょう。最も平均給与が高い部門を見つけるという課題があります。

このようなデータを取得するには、department 列でデータをグループ化し、AVG() 関数を使って平均給与を計算します。

123
SELECT department, AVG(salary) as average_salary FROM employees GROUP BY department
copy

このセクションでは、Montreal Metro system database を使用します。このデータベースには metro_travel_time テーブルが含まれています。

このテーブルには、station lineline_name)、namestation_name)、および列車がある駅から次の駅まで移動するのにかかる時間time_to_next_station)に関する情報が含まれています。

このtableの構造とdata previewは以下の通りです:

ご覧の通り、これは複雑なテーブルではありません。ここでグループ化をどのように活用できるか考えてみましょう。

最も明白な選択肢は、地下鉄路線の色ごとにグループ化することです。つまり、地下鉄路線の色でデータを集約できます。

エイリアス

課題では、エイリアスと呼ばれる概念をよく使用します。エイリアスとは、SELECT文で取得したカラムに付ける「ニックネーム」のようなものです。次の構文で指定します。

SELECT column AS alias

エイリアスは、カラムが結果にどのように表示されるかにのみ影響します。

例えば、MAX(time)の代わりに、そのカラムにエイリアスを付けてmax_timeと表示することができます。これにより、出力がより読みやすく、分かりやすくなります。

タスク

スワイプしてコーディングを開始

各路線ごとに次の駅までの最長所要時間を求めることがあなたの課題です。これにより、各地下鉄路線間での最長移動時間を特定できます。そのためには、MAX()関数を使用し、エイリアスとしてmax_timeを指定し、line_name列でデータをグループ化してください。

簡単な手順

  • line_nameテーブルからtime_to_next_station列とmetro_travel_time列の最大値を取得します。
  • 最大値にはエイリアスmax_timeを付与します。
  • データはline_name列でグループ化します。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  1
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt