# SQLで覚えるべき書き方はSELECT文だけ！SELECT文とWHERE句・集計関数をマスターしよう！

> 当サイト【スタビジ】の本記事では、SQLでマスターしておきたい基本的な構文SELECT文について見ていきます！SQLでは、基本SELECT文ができて後はそれにWHERE句や集計関数そして他テーブルのJOINなどが出来れば不自由しません！

- URL: https://toukei-lab.com/sql-select%e6%96%87
- 公開: 2022.11.29 / 更新: 2024.12.16
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、SQLでマスターしておきたい基本的な構文SELECT文について見ていきます！SQLでは、基本SELECT文ができて後はそれにWHERE句や集計関数そして他テーブルのJOINなどが出来れば不自由しません！
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です。

SQLが使えるようになると、<mark>データベースから自分で自由にデータを引っ張ってくることができる</mark>ので便利！

とは言え、

:::talk{who="man" side="left"}
SQL習得するの難しそう・・・
:::

:::talk{who="woman"}
覚えなくちゃいけないことがたくさんあるんでしょー
:::

いえいえ、<mark>実はSQLに必要なのは基本的に**SELECT文**だけ！</mark>

他の言葉は、あくまで修飾語なんです。

とりあえず、<mark>SELECT文さえ抑えちゃえばとりあえずはSQLマスター！笑</mark>

データベースにデータを挿入したり加工したりする場合は、他の命令文も覚える必要ありますが、デジタルマーケターであればデータを引っ張ってくるだけなのでSELECT文だけで良い！

また、[データサイエンティスト](/data-scientist)が使うのは[Python](/python-learn)のイメージがあるかもしれないですが、実はSQLを使う時間の方が長いんです！

[機械学習](/machine-learning-study)を使う時も[前処理やデータ加工](/eda)にめちゃくちゃSQLを使います！

そんなこんなでとりあえずSQL文マスターしちゃいましょう！

この記事では、<mark>SQL初心者向けに書き方に関してまとめていきます！</mark>

この記事でお伝えしていることだけ覚えておけば基本は大丈夫です！

以下のYoutube動画でも分かりやすく解説しているので是非見てみてください！

::youtube{#LYBqs6LtmLs}

ちなみに僕のUdemy講座でSQLのデータ加工集計100本ノックを提供していますので、ぜひ興味のある方は挑戦してみてください！

:::box
[【超実践】SQLのデータ加工集計100本ノック！BigQueryで学ぶSQLの超実践講座！](https://www.udemy.com/course/sql100bq/?referralCode=0E58EF4B9193CB2AF8B6)

[![SQL画像](/wp-content/uploads/2024/10/e59040e42a0308a77a271b0fc8715472.jpg)](https://www.udemy.com/course/sql100bq/?referralCode=0E58EF4B9193CB2AF8B6)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>4.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級〜中級</span></td>
</tr>
</tbody>
</table>

SQL✕データ集計・加工処理の100問に挑戦して腕試ししたいならこれ！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

＼30日以内なら返金無料／

::button[このコースを見てみる]{href="https://www.udemy.com/course/sql100bq/?referralCode=0E58EF4B9193CB2AF8B6"}
:::

## SELECT文の使い方

まず、**SELECT文の使い方**からです。

ここで下のようなテーブルがあったとしましょう！

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col span="3"> </colgroup>
<tbody>
<tr>
<td>名前</td>
<td>性別</td>
<td>購入金額</td>
</tr>
<tr>
<td>ウマたん</td>
<td>男</td>
<td>1000</td>
</tr>
<tr>
<td>ロボたん</td>
<td>男</td>
<td>2000</td>
</tr>
<tr>
<td>デジ子</td>
<td>女</td>
<td>4000</td>
</tr>
<tr>
<td>デジ郎</td>
<td>男</td>
<td>3000</td>
</tr>
</tbody>
</table>

このテーブルでは、顧客の購入フローを管理しています。

簡易的に名前と性別、売上という列を入れました。

さて、まずはデータを取り出してみましょう！

:::box
SELECT \* FROM テーブル名
:::

<mark>「SELECTで欲しい情報を指定」し、「FROMでどこから持ってくるか明記」する。</mark>

基本的にはこれだけです。

この時、＊を使うと、全ての情報が抽出されます。

今回の場合、テーブル名はorder_tebleなので、このように記述してあげましょう！

:::box
SELECT \* FROM order_table
:::

結果はもちろん全ての行・列が取り出されるのでこのようになりますね！

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col span="3"> </colgroup>
<tbody>
<tr>
<td>名前</td>
<td>性別</td>
<td>購入金額</td>
</tr>
<tr>
<td>ウマたん</td>
<td>男</td>
<td>1000</td>
</tr>
<tr>
<td>ロボたん</td>
<td>男</td>
<td>2000</td>
</tr>
<tr>
<td>デジ子</td>
<td>女</td>
<td>4000</td>
</tr>
<tr>
<td>デジ郎</td>
<td>男</td>
<td>3000</td>
</tr>
</tbody>
</table>

名前だけ取り出したい！そんな時は名前を指定してあげましょう！

:::box
SELECT 名前 FROM order_table
:::

これを実行すると以下のような結果が返ってきます。

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col span="3"> </colgroup>
<tbody>
<tr>
<td>名前</td>
</tr>
<tr>
<td>ウマたん</td>
</tr>
<tr>
<td>ロボたん</td>
</tr>
<tr>
<td>デジ子</td>
</tr>
<tr>
<td>デジ郎</td>
</tr>
</tbody>
</table>

簡単ですね。

## WHERE句の書き方

さて、続いて、男性だけの売上が知りたいとします。

この時も基本的には売上を引っ張ってくるということを意識して、まずは以下のように記述しちゃいましょう！

:::box
SELECT 名前、購入金額 FROM order_table
:::

このように記述した場合、全員分の購入金額が以下のように取り出されますね。

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col span="2"> </colgroup>
<tbody>
<tr>
<td>名前</td>
<td>購入金額</td>
</tr>
<tr>
<td>ウマたん</td>
<td>1000</td>
</tr>
<tr>
<td>ロボたん</td>
<td>2000</td>
</tr>
<tr>
<td>デジ子</td>
<td>4000</td>
</tr>
<tr>
<td>デジ郎</td>
<td>3000</td>
</tr>
</tbody>
</table>

しかし、この場合は男性だけの売上が知りたい！

そんな時はWHERE句を使います。

:::box
SELECT 名前、購入金額 FROM order_table\
WHERE 性別＝”男”
:::

<mark>WHERE句のあとに条件を持ってくることである一定のセグメントに絞ることができます。</mark>

このように絞ると、こんな感じの結果になりますね。

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col span="2"> </colgroup>
<tbody>
<tr>
<td>名前</td>
<td>購入金額</td>
</tr>
<tr>
<td>ウマたん</td>
<td>1000</td>
</tr>
<tr>
<td>ロボたん</td>
<td>2000</td>
</tr>
<tr>
<td>デジ郎</td>
<td>3000</td>
</tr>
</tbody>
</table>

## 集計関数の書き方

せっかく男だけの売上が取れたので合計してみましょう。

<mark>合計値を出すときはSUM関数を使います。</mark>

:::box
SELECT SUM(購入金額) AS 合計購入金額 FROM order_table\
WHERE 性別＝”男”
:::

結果は以下のようになりますね。

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col> </colgroup>
<tbody>
<tr>
<td>合計購入金額</td>
</tr>
<tr>
<td>6000</td>
</tr>
</tbody>
</table>

ASでSELECTで引っ張ってきた値に対して分かりやすい名前を付けることができます。

また平均を求めたい時は、AVG関数を使いましょう！

:::box
SELECT AVG(購入金額) AS 平均購入金額 FROM order_table\
WHERE 性別＝”男”
:::

これで男性の平均購入金額が求められました！

<table border="0" cellspacing="0" cellpadding="0" class="table">
<tbody>
<tr>
<td>平均購入金額</td>
</tr>
<tr>
<td>2000</td>
</tr>
</tbody>
</table>

この時、<mark>集計結果から名前がなくなっていることに注意しましょう。</mark>

集計関数を用いて列を引っ張ってくる場合、他の列名にも集計関数を用いないとエラーが起きます。

## GROUP BYの書き方

続いて、<mark>頻繁に使うGROUP BY句の書き方について見ていきましょう！</mark>

<table border="0" cellspacing="0" cellpadding="0" class="table">
<colgroup>
<col span="3"> </colgroup>
<tbody>
<tr>
<td>名前</td>
<td>性別</td>
<td>購入金額</td>
</tr>
<tr>
<td>ウマたん</td>
<td>男</td>
<td>1000</td>
</tr>
<tr>
<td>ロボたん</td>
<td>男</td>
<td>2000</td>
</tr>
<tr>
<td>デジ子</td>
<td>女</td>
<td>4000</td>
</tr>
<tr>
<td>デジ郎</td>
<td>男</td>
<td>3000</td>
</tr>
</tbody>
</table>

この時、WHERE句と集計関数を用いてこのように記述すると

::::box
:::box
SELECT SUM(購入金額) AS 合計購入金額 FROM order_table\
WHERE 性別＝”男”
:::
::::

男だけの合計購入金額が出てきます。

女性の合計金額を算出したい時はWHERE句の条件のところを女にすれば良いですね。

ただ、いちいち性別ごとにWHERE句で指定するのは面倒くさい。

:::talk{who="robotan"}
たしかに、、、
:::

そんな時は、GROUP BY句を使いましょう！

::::box
:::box
SELECT 性別、SUM(購入金額) AS 合計購入金額 FROM order_table\
GROUP BY 性別
:::
::::

結果は以下のようになります。

<table class="table">
<tbody>
<tr>
<td>性別</td>
<td>合計購入金額</td>
</tr>
<tr>
<td>男</td>
<td>6000</td>
</tr>
<tr>
<td>女</td>
<td>4000</td>
</tr>
</tbody>
</table>

GROUP BYを使うと指定した列に入っている要素ごとの集計結果を算出してくれます。

実務では、日別の売上・月別の売上・年代別の売上など、条件を絞った上での集計が多くなりますので<mark>GROUP BYは必須の関数です。</mark>

:::talk{who="robotan"}
GROUP BY、すごく便利だな！
:::

:::talk{who="umatan"}
一文で済むのはありがたいよね！
:::

GROUP BYを使って上手くデータを集計していきましょう！

## SQLの書き方　まとめ

![SQLマスター](/wp-content/uploads/2022/11/4b8c008040905dbdad0f47f175fbe067.jpg)

いかがだったでしょうか？

<mark>SQLって実はめちゃくちゃ単純</mark>なんです！

是非マスターして、データベースから欲しいデータをゴリゴリ引っ張ってこれるようになりましょう！

:::talk{who="umatan"}
SQLをマスターして色んなところにあるデータをグリグリいじりまくろう！！
:::

:::point
**SQLはSELECT文さえ覚えてしまえばオーケー！**
:::

SQLについて勉強するなら以下の本が非常にオススメ！

::product[スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)]{url="https://www.amazon.co.jp/dp/4295005096?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/51Wj-FeLE2L._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/4295005096?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2FSQL%2F%3Ff%3D1%26grp%3Dproduct"}

SQLの勉強法やオススメ本をこちらでまとめているので勉強したい方は是非見てみてください！

<https://toukei-lab.com/sql%E3%82%AA%E3%82%B9%E3%82%B9%E3%83%A1%E6%9C%AC>

また当メディア「スタビジ」が運営しているスクール「[スタビジアカデミー（スタアカ）](https://toukei-lab.com/achademy/)」では、SQLのもっと踏み込んだ実践について学べるので是非チェックしてみてください！

:::box
[業界最安値のデータサイエンス専門スクール「スタアカ」](https://toukei-lab.com/achademy/)
:::

スタアカ以外にも多くのSQLを学べるスクールがあります。以下にまとめているので是非チェックしてみてください！

<https://toukei-lab.com/sql-school>

自分で環境構築するのが面倒な人はクラウドサービスの[BigQuery](/bigquery)の利用をおすすめします。下記の記事で解説しているのでチェックしてみてください。

<https://toukei-lab.com/bigquery>