【SQL超入門講座】18.SUBSTRING|文字列の一部を切り出す方法

オススメ

今回は「substring」について説明します。
substr関数は文字列から一部分を切り出すことができる関数です。

例えばこのような数年分の商品の売り上げデータから、どの月に一番商品が売れるか調べたいとしましょう。
このときsubstring関数を使えば、日付から月の部分だけを切り出すことができるので、集計が楽に行えます。

このようにカラムのデータの一部分を切り出して、集計や分類を行うことはよくあります。
そのため、substring関数の使い方はしっかりマスターしておくようにしましょう。

それではレッスンスタートです。

▼目次
00:00 はじめに
00:56 SUBSTRING関数の使い方
02:13 文字列から切り出して条件抽出
03:39 年月ごとの売り上げ集計
04:44 日ごとの売り上げ集計
05:50 おわりに

▼関連動画
【SQL超入門講座】01.コース紹介 ~ SQLとは? ~ 環境構築|初心者向け

【SQL超入門講座】01.コース紹介 ~ SQLとは? ~ 環境構築|初心者向け

【SQL超入門講座】02.データベースのテーブルとは?

【SQL超入門講座】02.データベースのテーブルとは?

【SQL超入門講座】03.SELECT文|SQLの基本中の基本

【SQL超入門講座】03.SELECT文|データベースからデータ抽出する方法

【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法

【SQL超入門講座】04.WHERE|特定の条件でデータを抽出する方法

【SQL超入門講座】05.ORDER BY|データの並び替え

【SQL超入門講座】05.ORDER BY|データの並び替える方法

【SQL超入門講座】06.GROUP BY|グルーピング、グループ化

【SQL超入門講座】06.GROUP BY|指定したカラムの値を基準にデータを集計する方法

【SQL超入門講座】07.HAVING|グループ化したデータの中からデータ抽出

【SQL超入門講座】07.HAVING|グループ化したデータの中からデータ抽出

【SQL超入門講座】08.JOIN|テーブルの結合(INNER JOIN/LEFT JOIN)

【SQL超入門講座】08.INNER JOIN/LEFT JOIN|テーブル同士を結合する方法①

【SQL超入門講座】09.PostgreSQLの環境構築|MacとWindowsで解説!

【SQL超入門講座】09.PostgreSQLの環境構築|MacとWindowsで解説!

【SQL超入門講座】10.PythonとPostgreSQLの接続

【SQL超入門講座】10.PythonからPostgreSQLに接続する方法

【SQL超入門講座】11.データベースのバックアップと復元

【SQL超入門講座】11.データベースのバックアップと復元する方法

【SQL超入門講座】12.テーブルの結合(RIGHT JOIN/OUTER JOIN)

【SQL超入門講座】12.RIGHT JOIN/OUTER JOIN|テーブルの結合する方法②

【SQL超入門講座】13.AND, OR|複数条件で抽出する方法

【SQL超入門講座】13.AND, OR|複数条件で抽出する方法

【SQL超入門講座】14.LIKE|部分一致や前方一致、後方一致するレコードを抽出する方法

【SQL超入門講座】14.LIKE|部分一致や前方一致、後方一致するレコードを抽出する方法

【SQL超入門講座】15.BETWEEN|区間を指定して抽出する方法

【SQL超入門講座】15.BETWEEN|区間を指定して抽出する方法

【SQL超入門講座】16.LENGTH関数|文字数を条件にしてデータを抽出する方法

【SQL超入門講座】16.LENGTH関数|文字数を条件にしてデータを抽出する方法

【SQL超入門講座】17.DISTINCT|重複した値を排除して抽出する方法

【SQL超入門講座】17.DISTINCT|重複した値を排除して抽出する方法

▼書き起こしブログ
https://kino-code.com/sql18/

▼自己紹介
ブログに自己紹介を書いております。
https://kino-code.com/profile/

▼SNS
Twitter : https://twitter.com/kino_code/likes
Facebook : https://www.facebook.com/キノコード -105693727500005/
Website : https://kino-code.com/

▼書き起こし
substring関数は対象の文字列から、開始位置と文字数を指定して、一部文を切り出すことができます。
substring関数の基本書式はこちらです。

“`SQL
substring(文字列(カラム名), 開始位置, 文字数)

“`
第一引数に対象の文字列またはカラムを指定します。
第二引数に文字列を切り出す開始位置を整数で指定します。
この開始位置の整数は、プラス、マイナスどちらも取ることができます。
開始位置の整数をNとすると、次のように考えることができます。
もしNがプラスの場合、最初の文字を1番目と考え、最初の文字からN番目が開始位置となります。
例えばNが3であれば、最初の文字から3文字目が開始位置となります。

もしNがマイナスの場合、最後の文字を-1番目と考え、最後の文字からN番目が開始位置となります。
例えばNが-3であれば、最後の文字から3文字前が開始位置となります。

substring関数はDBによって関数名や文法が若干異なります。
substrと記載するものもありますので、使い分けに注意しましょう。

それでは実際にテーブルを用いて、使い方を確認しましょう。
今回使用するテーブルはこちらのtest_tableです。
test_tableはどの社員がいつ、何を売り上げたか記録されているテーブルです。

まずtest_tableから、「社員ID」の下二桁が「0~20」のデータを全て抽出してみましょう。
SQLはこのように書くことができます。

“`SQL​
SELECT *
FROM test_table
WHERE substring(“社員ID”,3,2) BETWEEN ’00’ and ’20’
“`

WHERE句にsubstring関数を使って条件を書きます。
第一引数に対象のカラム「社員ID」を指定します。
この社員IDから下二桁を切り出し、条件に合致するか調べます。
社員IDは4桁なので、下二桁の開始位置は最初の文字から数えて3番目です。
そのため第二引数に3と書きます。

もちろん下二桁の開始位置を、最後の文字から数えて2番目と考えてもOKです。
その場合、第二引数には-2と書きましょう。
最後に、第三引数に切り取る文字数の2を書きます。
これで社員IDから下二桁が切り出せたことになります。
このsubstring関数で切り出した社員IDの下二桁が、0から20の間としたいので、between関数を使います。

それではSQLを実行します。

「社員ID」の下二桁が「0~20」のデータが98件抽出されました。

では次に「売上日の年月ごと」の「売上金額の合計」のデータを抽出してみましょう。
SQLはこのように書くことができます。

“`SQL​
SELECT substring(“売上日”,1,7) 年月,
sum(“売上金額”) 売上合計
from test_table
group by 年月

“`
売上金額を年月ごとにグループにして集計します。
この売上金額の集計基準となる年月は、売上日からsubstring関数を使って抽出します。

まず第一引数に対象となる売上日のカラムを指定します。
売上日の最初の文字から7番目の文字までが年月の部分です。
そのため第二引数に1と書き、第三引数に7と書きます。
この年月の部分を切り取ったカラムには、そのまま「年月」という別名をつけておきましょう。

年月ごとに売上金額を集計するので、GROUP BY句に年月のカラムを指定します。
そしてSELECT句で年月のカラムを抽出するとともに、SUM関数で売上金額を集計しましょう。
それではSQLを実行します。
(続く)

#SQL #データベース #postgreql #SQLite #文字列一部 #SUBSTRING

コメント

タイトルとURLをコピーしました