クエリ

GraphQL

【GraphQL】GraphQLとは?

こんにちは、かつコーチです。今回は、昨今流行っているGraphQLについて解説します。これまでのSQLと何が違うのかも含めて解説します。GraphQLは、Facebookが開発したAPIクエリ言語です。REST APIの代替として広く採用さ...
PostgreSQL

【PostgreSQL】UPSERT(ON CONFLICT)とRETURNINGで往復を減らす

こんにちは、かつコーチです。「レコードがあれば更新、なければ新規登録」という処理を書くとき、まずSELECTで存在チェックをしてからINSERTかUPDATEを分岐させていませんか。その方法はアプリケーションとDBの往復が増えるうえ、同時ア...
PostgreSQL

【PostgreSQL】ウィンドウ関数の基本:ランキングと集計を両立する

こんにちは、かつコーチです。「各カテゴリの売上ランキングを、元の行を保ったまま表示したい」と思ってGROUP BYを使ったら、個別の行が消えて集計値しか出せなかった、という経験はありませんか。そんなときに使うのがウィンドウ関数です。GROU...
PostgreSQL

【PostgreSQL】再帰CTEで階層データを扱う

こんにちは、かつコーチです。組織図、カテゴリのツリー構造、コメントの返信ネストなど、階層データはWebアプリの定番テーマです。前回はCTEの基本を扱いましたが、今回はCTE自身を参照して繰り返し処理を行う再帰CTEを掘り下げます。CTEの基...
PostgreSQL

【PostgreSQL】CTE(WITH句)の基本:クエリを読みやすく整理する

こんにちは、かつコーチです。サブクエリを何段もネストしたSQLを書いて、自分で見返したときに「これ何をやっているんだっけ」と迷った経験はありませんか。今回はそんなときに役立つCTE(Common Table Expression、共通テーブ...