前回の 「上級編①」 では、
- SELECT文で特定の列を抽出
- WHERE文で条件を指定
- Col1、Col2などの柔軟な指定方法
を解説しました。
今回は、 より高度なデータ抽出テクニック として
✅ WHEREで日付の範囲を指定
✅ LIKEを使った部分一致検索
✅ ORDER BYで並び替え
✅ GROUP BYでデータを集計(SUM・AVG・MIN・MAX)
といった 業務で使える実践的な使い方 を紹介します!
1. WHEREで日付の範囲を指定
📌 QUERY関数は日付データを {yyyy-mm-dd}
の形式で扱う必要がある
基本構文
excelコピーする編集する=QUERY(範囲, "SELECT 列名 WHERE 日付列 >= DATE 'yyyy-mm-dd'")
✅ 例:2024年1月以降の売上データを取得
注文ID | 商品名 | 注文日 | 売上 |
---|---|---|---|
101 | ノートPC | 2024/01/05 | 100000 |
102 | スマホ | 2023/12/20 | 80000 |
103 | タブレット | 2024/01/10 | 60000 |
104 | イヤホン | 2023/11/25 | 12000 |
excelコピーする編集する=QUERY(A1:D5, "SELECT B, C, D WHERE C >= DATE '2024-01-01'")
結果
商品名 | 注文日 | 売上 |
---|---|---|
ノートPC | 2024/01/05 | 100000 |
タブレット | 2024/01/10 | 60000 |
✅ 例:2024年1月1日~2024年1月31日までの売上データを取得
excelコピーする編集する=QUERY(A1:D5, "SELECT B, C, D WHERE C >= DATE '2024-01-01' AND C <= DATE '2024-01-31'")
💡 ポイント
- 日付は DATE ‘yyyy-mm-dd’ の形式で指定する
- 比較演算子(>=, <=, =)を使って範囲を設定
- TEXT関数を使えば変動的な日付も指定可能
excelコピーする編集する=QUERY(A1:D5, "SELECT B, C, D WHERE C >= DATE '" & TEXT(TODAY() - 30, "yyyy-mm-dd") & "'")
→ 過去30日間のデータを取得!
2. LIKEで部分一致検索
📌 WHERE文に LIKE
を使うと、特定の文字を含むデータを検索可能
基本構文
excelコピーする編集する=QUERY(範囲, "SELECT 列名 WHERE 列名 LIKE '検索文字%'")
✅ 例:「スマホ」を含む商品を抽出
商品ID | 商品名 | カテゴリ | 価格 |
---|---|---|---|
A001 | ノートPC | 家電 | 100000 |
A002 | スマホ | 家電 | 80000 |
A003 | タブレット | 家電 | 60000 |
A004 | ワイヤレスイヤホン | アクセサリー | 12000 |
A005 | スマホケース | アクセサリー | 3000 |
excelコピーする編集する=QUERY(A1:D6, "SELECT B, C, D WHERE B LIKE '%スマホ%'")
結果
商品名 | カテゴリ | 価格 |
---|---|---|
スマホ | 家電 | 80000 |
スマホケース | アクセサリー | 3000 |
💡 ポイント
- LIKE ‘%文字列%’ → 「文字列」を含むデータを検索
- LIKE ‘文字列%’ → 「文字列」で始まるデータを検索
- LIKE ‘%文字列’ → 「文字列」で終わるデータを検索
3. ORDER BYで並び替え(昇順・降順)
📌 ORDER BY
を使うと、データを昇順・降順に並べ替え可能
基本構文
excelコピーする編集する=QUERY(範囲, "SELECT 列名 ORDER BY 列名 ASC")
✅ 例:価格の安い順に商品を並び替え
excelコピーする編集する=QUERY(A1:D6, "SELECT B, C, D ORDER BY D ASC")
結果
商品名 | カテゴリ | 価格 |
---|---|---|
スマホケース | アクセサリー | 3000 |
ワイヤレスイヤホン | アクセサリー | 12000 |
タブレット | 家電 | 60000 |
スマホ | 家電 | 80000 |
ノートPC | 家電 | 100000 |
✅ 例:価格の高い順に並び替え
excelコピーする編集する=QUERY(A1:D6, "SELECT B, C, D ORDER BY D DESC")
💡 ポイント
ORDER BY 列名 ASC
→ 昇順(小さい順)ORDER BY 列名 DESC
→ 降順(大きい順)
4. GROUP BYでデータを集計(SUM・AVG・MIN・MAX)
📌 GROUP BY
を使うと、特定の項目ごとにデータを集計できる!
基本構文
excelコピーする編集する=QUERY(範囲, "SELECT カテゴリ, SUM(価格) GROUP BY カテゴリ")
✅ 例:カテゴリごとの売上合計を算出
商品ID | 商品名 | カテゴリ | 売上 |
---|---|---|---|
A001 | ノートPC | 家電 | 100000 |
A002 | スマホ | 家電 | 80000 |
A003 | タブレット | 家電 | 60000 |
A004 | ワイヤレスイヤホン | アクセサリー | 12000 |
A005 | スマホケース | アクセサリー | 3000 |
excelコピーする編集する=QUERY(A1:D6, "SELECT C, SUM(D) GROUP BY C")
結果
カテゴリ | 売上合計 |
---|---|
家電 | 240000 |
アクセサリー | 15000 |
✅ 例:カテゴリごとの平均価格を算出
excelコピーする編集する=QUERY(A1:D6, "SELECT C, AVG(D) GROUP BY C")
💡 ポイント
- SUM(列名) → 合計値
- AVG(列名) → 平均値
- MIN(列名) → 最小値
- MAX(列名) → 最大値
✅ まとめ
クエリ文 | 目的 | 例 |
---|---|---|
WHERE + 日付 | 指定した期間のデータを抽出 | WHERE C >= DATE '2024-01-01' |
WHERE + LIKE | 部分一致検索 | WHERE B LIKE '%スマホ%' |
ORDER BY | 並び替え | ORDER BY D DESC (降順) |
GROUP BY + SUM | カテゴリごとの売上合計 | SELECT C, SUM(D) GROUP BY C |
👉 QUERY関数を活用すれば、スプレッドシートでもSQLのようなデータ抽出・集計が可能! 🚀