いきなりですがこちゃコードはお引越しをします!!! それに伴い名前も 「かめみちのSQL教室」となります 個人的に少し進みすぎたと反省しておりますので、一層初めて学ぶ方のためにわかりやすく書きなおしていきます。 既に似た記事をご覧になった方は復習…
今日はコードの紹介ではなく関数の紹介をしていきます 前回紹介しましたがGoogleスプレッドシートでSQLのような関数を使うには、Googleが提供する「QUERY関数」を使いますね。 基本構文のおさらいですが、 =QUERY(範囲, "SQL文", ヘッダー行の数) 例:A1から…
今回は、GoogleスプレッドシートでSQLを使う方法を紹介します! スプレッドシート上でも、SQLのコードを使うことができます。ただ本当のSQLではなくクエリ関数を使います。 下記のようなデータがスプレットシートにあったとします A(id) B(category) C(…
今回は「カテゴリ × 時間帯」のクロス集計を行うSQLを紹介します! レポートやダッシュボードでは、カテゴリごとの時間帯別の傾向を見たいことがありますよね。 今回は SQL だけでピボット的に「カテゴリごとの件数を横並び」で集計し、さらに全体の件数も別…
今回は前回の続きとして、「時間帯別のカテゴリ件数と、全体の総件数を別々に表示する方法」を解説します! 実務でも、「時間帯ごとの傾向」と「全体の件数」を同じレポートに載せたいけれど、同じ表に混ぜずに別々の枠で見たい、というケースはよくあります…
今回は前回の応用として、「カテゴリ別に時間帯ごとの件数・全体件数・総件数を同時に表示する方法」を解説します! 時間帯分析に加えて、カテゴリで絞り込みや比較をしたい場面も多いですよね。 今回紹介するクエリでは、以下の3つを同時に取得します: ①指…
今回は前回の続きとして、「時間帯別に集計して表にする方法」を解説します! ログや売上データを分析するとき、「何時ごとの件数」「時間帯別の合計」などを出したい場面はとても多いです。 SQLでは、日時型から時間部分を取り出してグループ化することで、…
今回は「文字列を日付型に変換してINSERTする方法」を解説します! 「'YYYY-MM-DD 00:00:00' という文字列を、DATETIME型のカラムに正しく保存していきます。 ↓文字列をそのままINSERTする例↓ INSERT INTO logs (created_at) VALUES ('2025-07-08 00:00:00')…
今回は次回時間を追加するためにINSERTとは?について解説します! SQLを使う現場では、テーブルに新しいデータを登録する場面がとても多いです。 例えば「注文履歴を保存する」「ログを記録する」「会員情報を追加する」など、INSERTは超重要な基本文法の一…
今回は前回の続きとして、「CONVERTを使って本日の日付を時間固定で自動入力する方法」を解説します! たとえば「今日の日付を 'YYYY-MM-DD 00:00:00' のように固定してログに入れたい」というときにSQLで自動生成する方法を見ていきましょう! 簡単に行うだ…
今回は前回の続きとして、「CASTとCONVERTの違いと使い分け」を解説します! SQLではデータ型を変換する方法として CASTを前回紹介しました。 もう一つCONVERTという関数もあります。 どちらも型変換を行えますが、微妙に書き方や使えるオプションが違います…
今回は前回の続きとして「CASTで日時を変換する方法」を解説します! SQLで日時データを扱うとき、「YYYY-MM-DD」の形式に変換したい、「時間部分を切り捨てたい」など、整形が必要になる場面が多いです。 CASTを使うと、日時を文字列型に変換して、必要なフ…
今回は「CASTを使ってデータ型を変換する方法」を解説します! 書いてみると「文字列を数値に変換したい」「数値を文字列として結合したい」「日付型を文字列にしたい」など、型変換がとても重要です。 SQLでは CAST を使うことで明示的にデータ型を変換でき…
今回は前回の続きとして、「WITHを使ってカテゴリごとの売上割合(%)を計算するプロシージャ」を作っていきます! 例えば、「全体売上の中で、各カテゴリがどれくらいの割合を占めているか」を出したいときに使えるやり方です。 これを使うと、売上の構成比…
今回は前回に引き続き、WITHを使ったプロシージャの応用として、売上金額の多いカテゴリを上位〇だけ表示する処理を行います。 これにより、「売上ランキングの上位カテゴリだけを一覧にしたい」といった現場でも役立つ処理ができるようになりますね!! ORD…
今回は前回の「WITHを使ったプロシージャ」の続きとして、平均より高いカテゴリだけを抽出するプロシージャを作ってみます。 前回はすべてのカテゴリを平均と比較して、「平均超え/平均未満/平均」と分類して表示しました。 今回はその応用で、平均を超え…
今回は、前回紹介したUNIONを使ったコードについて解説していきます! ↓おさらいのSQLコード↓ SELECT category, COUNT(*) AS '件数' FROM sales GROUP BY category UNION ALL SELECT '合計' AS category, COUNT(*) AS '件数' FROM sales; 【解説】 このコー…
今日はプロシージャから少し外れてCOUNTとSUMを両方使いたい時の方法について書いていきます〜 下記のようなsalesデータがあったとします id category item 1 食品 りんご 2 食品 バナナ 3 雑貨 ノート 4 食品 みかん 5 雑貨 ペン 6 食品 キャベツ 7 雑貨 ハ…
今回はプロシージャの中で WITH を使った書き方をしていきます WITHを使うと、途中で名前をつけた集計結果を別名のテーブルのように扱えるので、長いSQLを整理して書きやすくなります。 ただし、MySQLではバージョンによってはストアドプロシージャの中でWIT…
今回は、カテゴリごとの売上を集計し、その合計金額が「全体平均より高いか低いか」を比較するプロシージャを作ってみます。 今回はサブクエリを直接使って書き換えていきます。 ↓SQLコード↓ DELIMITER // CREATE PROCEDURE compare_sales_with_average() BE…
今回は売上金額が高い順に並べたうえで、上位〇件だけを表示してみましょう。 こうすることで「その月の売上が大きい順に、上から何件だけを見たい」といったことができます! LIMITを使うと、表示する件数を制限できます。 ↓SQLコード↓ DELIMITER // CREATE…
今回は、カテゴリごとの売上を日付順に並べるプロシージャを作ってみます。 急に進んできたので復習も兼ねて今日は並び替えを追加するのみです! 並び替えなのでORDER BYですね。 ↓SQLコード↓ DELIMITER // CREATE PROCEDURE daily_sales_by_category( IN ta…
今回はさらに進めて、「月」と「カテゴリ」を同時に指定できるプロシージャを作ってみます。 これによって、たとえば「2024年1月の食品だけ」といったように、条件をより細かく絞ることができます。 ↓SQLコード↓ DELIMITER // CREATE PROCEDURE total_sales_…
今回は前回の total_sales プロシージャに引数を加えて、条件付きで集計ができるようにしてみます! 月別に売上を絞り込んで集計したい場合、例えば「2024年1月だけのデータを見たい」ときに使える方法です。 【解説】 ↓SQLコード↓ DELIMITER // CREATE PROC…
前回紹介したこのプロシージャについて掘り下げて解説していきます! ↓SQLコード↓ DELIMITER // CREATE PROCEDURE total_sales() BEGIN SELECT category, SUM(amount) FROM sales GROUP BY category; END // DELIMITER ; 何をやっているのか分からないという…
PROCEDURE(プロシージャ)といった一見WITHに書き方の似たよう関数があります。 これがWITHとどう使う分けるのか確認していきましょう! 【確認】 WITHはSQLの中で一時的に使える名前付きの中間テーブルを作るためのものでしたね! ↓使用例↓ WITH monthly_sal…
WITHはサブクエリに名前をつけて使い回すことができます!これにより、長くて複雑なクエリが「すっきり・読みやすく・保守しやすく」なります この前と同じデータで書き直ししてみましょう month item_id category amount 2024-01-01 1001 食品 5000 2024-01…
WITHは、1つだけでなく複数並べて使うことができます。これにより「中間結果」を段階的に積み重ねながら、最終的な目的に近づいていく処理が可能です。 それを使って平均売上の算出とその売上が全体平均より高いか低いかを表示しましょう! データ(sales) m…
前々回と同様に成長率を出していくのですが、 学んだサブクエリをFROMとJOINの両方で使って行ってみましょう! 【データとコード】 以下は、sales テーブルの元データです。 month item_id category amount 2024-01-01 1001 食品 5000 2024-01-01 1002 雑貨 …
JOINでサブクエリ?よく聞くけど、実際どう使うのか分からない…。そんな時のために今回は、JOINの中でサブクエリを使うパターンを丁寧に紹介します!まず、サブクエリとはSQL文の中の途中に出てくるSELECT文のことですね。サブクエリを使うと一時的に集計し…