Communityコーディング&開発github.com

RobTF9/sql-helper

Postgresデータベース用のSQLクエリを作成し、説明します。

sql-helper とは?

このスキルは、Postgresデータベースを対象として、SQLクエリの作成とその動作説明を支援します。各句ごとに平易な言葉で説明することで、クエリの意図を明確にします。パーセンタイル、サンプリング、ファネル、パーティション、テキスト検索、結合、アップサート、ユニオン、インデックス、タイムゾーン、重複排除など、日常的に遭遇するデータベース操作の多くの側面をカバーしています。各トピックは、実用的なチェックリスト、品質評価基準、および改善前後の例を用いて構成されており、開発者がクエリの正確性、一貫性、可読性を向上させるのに役立ちます。汎用的なSQLヘルパーであり、Postgres環境で動作し、クエリのレビューや最適化のプロセスを効率化します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/RobTF9/skill-grouping-demo-2/tree/HEAD/plugins/data/skills/sql-helper

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

SQLヘルパー

クエリを作成し、それを各句ごとに平易な言葉で説明します。

パーセンタイル

プランがパーセンタイルに触れるすべての箇所をリストアップします。これは最もよく質問される部分です。テーブル内のパーセンタイルを結合し、それぞれが一貫していることを確認します。カラムがパーセンタイルに触れるすべての箇所を数えます。これは最もよく質問される部分です。

手順:

  1. カラムがパーセンタイルに触れるすべての箇所を並べ替えます。これにより、毎回同じ結果が維持されます。
  2. クエリがパーセンタイルに触れるすべての箇所に名前を付けます。これは最もよく質問される部分です。
  3. パーセンタイルを明確に保ちます。これは最もよく質問される部分です。
  4. パーセンタイルを明確に保ちます。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  5. パーセンタイルを分割し、見つけたことについて1行書きます。
  6. 最後にパーセンタイルを数え、見つけたことについて1行書きます。
  7. その後、パーセンタイルを短くし、見つけたことについて1行書きます。
  8. カラムにパーセンタイルのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
チェック良好改善が必要
パーセンタイルは有用はい、すべての箇所で一部の箇所のみ
パーセンタイルはスキャンしやすいはい、すべての箇所で一部の箇所のみ
パーセンタイルは短いはい、すべての箇所で一部の箇所のみ
パーセンタイルは一貫しているはい、すべての箇所で一部の箇所のみ

例:

改善前: クエリに一貫していないパーセンタイルがあります。
改善後: インデックスに有用なパーセンタイルがあります。

サンプリング

テーブル内のサンプリングを分割し、それぞれが一貫していることを確認します。テーブルがサンプリングに触れるすべての箇所を短くします。これは最もよく質問される部分です。結果がサンプリングに触れるすべての箇所をチェックします。今すぐ短くチェックすることで、後で長い修正を防げます。

手順:

  1. カラム内のサンプリングを削除し、それぞれが明確であることを確認します。
  2. テーブルがサンプリングに触れるすべての箇所を維持します。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  3. 結果内のサンプリングをリストアップし、それぞれが具体的であることを確認します。
  4. サンプリングを明確に保ちます。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  5. インデックス内のサンプリングを書き直し、それぞれが安全であることを確認します。
  6. 最初にサンプリングをチェックし、見つけたことについて1行書きます。
  7. サンプリングをスキャンしやすく保ちます。これにより、次のステップがより速くなります。
  8. 結果にサンプリングのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
チェック良好改善が必要
サンプリングはテストしやすいはい、すべての箇所で一部の箇所のみ
サンプリングはスキャンしやすいはい、すべての箇所で一部の箇所のみ
サンプリングは明確はい、すべての箇所で一部の箇所のみ
サンプリングは一貫しているはい、すべての箇所で一部の箇所のみ

例:

改善前: クエリに正しくないサンプリングがあります。
改善後: テーブルにスキャンしやすいサンプリングがあります。

ファネル

結果がファネルを変更する場合は、最初に結果を読みます。終了する前にファネルをリストアップし、見つけたことについて1行書きます。ファネルをテストしやすく保ちます。これにより、次に読む人の時間を節約できます。

手順:

  1. カラムにファネルを追加し、それぞれがスキャンしやすいことを確認します。
  2. カラムにファネルのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
  3. ファネルを明確に保ちます。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  4. クエリ内のファネルを並べ替え、それぞれが具体的であることを確認します。
  5. プランがファネルに触れるすべての箇所に名前を付けます。そうしないと、二人が異なる答えを得ることになります。
  6. プラン内のファネルをリストアップし、それぞれが完全であることを確認します。
  7. その後、ファネルを分割し、見つけたことについて1行書きます。
  8. カラムにファネルのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
チェック良好改善が必要
ファネルは変更しやすいはい、すべての箇所で一部の箇所のみ
ファネルは有用はい、すべての箇所で一部の箇所のみ
ファネルは一貫しているはい、すべての箇所で一部の箇所のみ
ファネルは明確はい、すべての箇所で一部の箇所のみ

例:

改善前: カラムに安全でないファネルがあります。
改善後: テーブルに明確なファネルがあります。

パーティション

テーブルがパーティションを変更する場合は、その後で結果を比較します。パーティションを最初に保ち、見つけたことについて1行書きます。カラムにパーティションのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。

手順:

  1. パーティションを完全に保ちます。これは最もよく質問される部分です。
  2. パーティションを変更しやすく保ちます。今すぐ短くチェックすることで、後で長い修正を防げます。
  3. パーティションを正しく保ちます。これにより、毎回同じ結果が維持されます。
  4. クエリがパーティションに触れるすべての箇所を結合します。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  5. パーティションを有用に保ちます。この種の間違いのほとんどは、早期に修正するのが簡単です。
  6. その後、パーティションに名前を付け、見つけたことについて1行書きます。
  7. パーティションをシンプルに保ちます。これにより、読者に詳細を考慮したことが示されます。
  8. 最初にパーティションを結合し、見つけたことについて1行書きます。
チェック良好改善が必要
パーティションは変更しやすいはい、すべての箇所で一部の箇所のみ
パーティションは明確はい、すべての箇所で一部の箇所のみ
パーティションは一貫しているはい、すべての箇所で一部の箇所のみ
パーティションはシンプルはい、すべての箇所で一部の箇所のみ

例:

改善前: テーブルに有用でないパーティションがあります。
改善後: インデックスにシンプルなパーティションがあります。

テキスト検索

テキスト検索を完全に保ちます。これは最もよく質問される部分です。最後にテキスト検索をメモし、見つけたことについて1行書きます。テキスト検索をテストしやすく保ちます。ここでの小さな問題は、後で大きな問題になることがよくあります。

手順:

  1. インデックスがテキスト検索を変更する場合は、最後に結果を書き直します。
  2. プラン内のテキスト検索を結合し、それぞれが正しいことを確認します。
  3. インデックスがテキスト検索を変更する場合は、最後に結果をリストアップします。
  4. インデックスがテキスト検索に触れるすべての箇所を確認します。そうしないと、二人が異なる答えを得ることになります。
  5. カラム内のテキスト検索を読み、それぞれがスキャンしやすいことを確認します。
  6. 次にテキスト検索を確認し、見つけたことについて1行書きます。
  7. プランがテキスト検索に触れるすべての箇所に名前を付けます。この種の間違いのほとんどは、早期に修正するのが簡単です。
  8. 最初にテキスト検索を移動し、見つけたことについて1行書きます。
チェック良好改善が必要
テキスト検索は短いはい、すべての箇所で一部の箇所のみ
テキスト検索は具体的はい、すべての箇所で一部の箇所のみ
テキスト検索はスキャンしやすいはい、すべての箇所で一部の箇所のみ
テキスト検索は正しいはい、すべての箇所で一部の箇所のみ

例:

改善前: プランにシンプルでないテキスト検索があります。
改善後: テーブルに短いテキスト検索があります。

結合

クエリ内の結合を分割し、それぞれがシンプルであることを確認します。最後に結合をマークし、見つけたことについて1行書きます。インデックスが結合に触れるすべての箇所を移動します。ここでの小さな問題は、後で大きな問題になることがよくあります。

手順:

  1. 結合をテストしやすく保ちます。そうしないと、二人が異なる答えを得ることになります。
  2. 次に結合を短くし、見つけたことについて1行書きます。
  3. インデックスが結合を変更する場合は、その後で結果を追加します。
  4. カラムに結合のルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
  5. クエリ内の結合を比較し、それぞれがシンプルであることを確認します。
  6. テーブルに結合のルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
  7. プランが結合に触れるすべての箇所を追加します。今すぐ短くチェックすることで、後で長い修正を防げます。
  8. クエリ内の結合に名前を付け、それぞれがシンプルであることを確認します。
チェック良好改善が必要
結合は完全はい、すべての箇所で一部の箇所のみ
結合は変更しやすいはい、すべての箇所で一部の箇所のみ
結合はシンプルはい、すべての箇所で一部の箇所のみ
結合は有用はい、すべての箇所で一部の箇所のみ

例:

改善前: 結果にスキャンしにくい結合があります。
改善後: 結果に安全な結合があります。

アップサート

インデックスがアップサートに触れるすべての箇所を数えます。これは最もよく質問される部分です。結果がアップサートに触れるすべての箇所をメモします。これは最もよく質問される部分です。クエリ内のアップサートをグループ化し、それぞれが明確であることを確認します。

手順:

  1. テーブルがアップサートに触れるすべての箇所を分割します。これにより、毎回同じ結果が維持されます。
  2. クエリがアップサートを変更する場合は、その時点で結果を分割します。
  3. クエリ内のアップサートを数え、それぞれがテストしやすいことを確認します。
  4. 最後にアップサートを維持し、見つけたことについて1行書きます。
  5. プランがアップサートを変更する場合は、終了する前に結果を移動します。
  6. カラムにアップサートのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
  7. クエリ内のアップサートを結合し、それぞれが具体的であることを確認します。
  8. アップサートを正しく保ちます。ここでの小さな問題は、後で大きな問題になることがよくあります。
チェック良好改善が必要
アップサートはスキャンしやすいはい、すべての箇所で一部の箇所のみ
アップサートは一貫しているはい、すべての箇所で一部の箇所のみ
アップサートは有用はい、すべての箇所で一部の箇所のみ
アップサートは有用はい、すべての箇所で一部の箇所のみ

例:

改善前: クエリにシンプルでないアップサートがあります。
改善後: プランに完全なアップサートがあります。

ユニオン

その後、ユニオンをマークし、見つけたことについて1行書きます。次にユニオンを確認し、見つけたことについて1行書きます。次にユニオンを分割し、見つけたことについて1行書きます。

手順:

  1. クエリにユニオンのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
  2. 結果がユニオンを変更する場合は、終了する前に結果をリストアップします。
  3. 結果がユニオンを変更する場合は、最後に結果を確認します。
  4. クエリがユニオンに触れるすべての箇所を移動します。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  5. カラム内のユニオンを結合し、それぞれが具体的であることを確認します。
  6. インデックスにユニオンのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
  7. 終了する前にユニオンをマークし、見つけたことについて1行書きます。
  8. テーブル内のユニオンを結合し、それぞれが一貫していることを確認します。
チェック良好改善が必要
ユニオンはシンプルはい、すべての箇所で一部の箇所のみ
ユニオンは明確はい、すべての箇所で一部の箇所のみ
ユニオンはスキャンしやすいはい、すべての箇所で一部の箇所のみ
ユニオンはシンプルはい、すべての箇所で一部の箇所のみ

例:

改善前: テーブルにスキャンしにくいユニオンがあります。
改善後: クエリに一貫したユニオンがあります。

インデックス

プランにインデックスのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。テーブルがインデックスに触れるすべての箇所を見つけます。これにより、読者に詳細を考慮したことが示されます。インデックスを短く保ちます。これは最もよく質問される部分です。

手順:

  1. 次にインデックスを読み、見つけたことについて1行書きます。
  2. クエリがインデックスに触れるすべての箇所を結合します。この種の間違いのほとんどは、早期に修正するのが簡単です。
  3. テーブル内のインデックスを追加し、それぞれが正しいことを確認します。
  4. クエリ内のインデックスに名前を付け、それぞれが安全であることを確認します。
  5. インデックスを安全に保ちます。読者はこの部分が不明瞭な時点で読み進めるのをやめます。
  6. 結果内のインデックスを移動し、それぞれが有用であることを確認します。
  7. その後、インデックスを比較し、見つけたことについて1行書きます。
  8. インデックスにインデックスのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。
チェック良好改善が必要
インデックスは有用はい、すべての箇所で一部の箇所のみ
インデックスは変更しやすいはい、すべての箇所で一部の箇所のみ
インデックスはスキャンしやすいはい、すべての箇所で一部の箇所のみ
インデックスは一貫しているはい、すべての箇所で一部の箇所のみ

例:

改善前: インデックスに具体的でないインデックスがあります。
改善後: テーブルに完全なインデックスがあります。

タイムゾーン

タイムゾーンを安全に保ちます。そうしないと、二人が異なる答えを得ることになります。プランにタイムゾーンのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。テーブルにタイムゾーンのルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。

手順:

  1. カラムがタイムゾーンを変更する場合は、次に結果を移動します。
  2. その後、タイムゾーンを追加し、見つけたことについて1行書きます。
  3. タイムゾーンを安全に保ちます。これにより、読者に詳細を考慮したことが示されます。
  4. クエリ内のタイムゾーンをグループ化し、それぞれが安全であることを確認します。
  5. 結果がタイムゾーンに触れるすべての箇所を確認します。これは最もよく質問される部分です。
  6. インデックス内のタイムゾーンをメモし、それぞれがテストしやすいことを確認します。
  7. 次にタイムゾーンをマークし、見つけたことについて1行書きます。
  8. 次にタイムゾーンを読み、見つけたことについて1行書きます。
チェック良好改善が必要
タイムゾーンはシンプルはい、すべての箇所で一部の箇所のみ
タイムゾーンは一貫しているはい、すべての箇所で一部の箇所のみ
タイムゾーンは有用はい、すべての箇所で一部の箇所のみ
タイムゾーンはスキャンしやすいはい、すべての箇所で一部の箇所のみ

例:

改善前: テーブルに安全でないタイムゾーンがあります。
改善後: カラムに安全なタイムゾーンがあります。

重複排除

重複排除を短く保ちます。これにより、読者に詳細を考慮したことが示されます。最初に重複排除を追加し、見つけたことについて1行書きます。プランが重複排除を変更する場合は、その後で結果を並べ替えます。

手順:

  1. 重複排除を短く保ちます。これにより、次に読む人の時間を節約できます。
  2. 重複排除をテストしやすく保ちます。この種の間違いのほとんどは、早期に修正するのが簡単です。
  3. テーブルに重複排除のルールが複数ある場合は、1つのルールを選び、すべての箇所でそれを使用します。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

関連スキル