仕様と根拠
抜け候補の規則
GROUP BY があるか集約関数があるとき、選択リストは未グループ化の列を集約関数の外で参照できません。例外は、その列がグループ化した列に関数従属している場合で、表の主キーが GROUP BY に入っていれば同じ表の他の列は書けます(SELECT 文書 GROUP BY 句)。
GROUP BY に書ける形
GROUP BY には入力列名のほか、出力列の名前や位置番号、式も書けます(SELECT 文書 GROUP BY 句)。選択リストの式がそのまま GROUP BY にあれば、その式は OK と扱います。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| PostgreSQL 18 ドキュメント SELECT | 2026年10月28日 | GROUP BY 句(未グループ化列の制限・関数従属・出力列名と位置番号) |
| PostgreSQL 18 ドキュメント 7.2 テーブル式 | 2026年10月28日 | 7.2.3 GROUP BY と HAVING |
| PostgreSQL 18 ドキュメント 4.1 字句構造 | 2026年10月28日 | 4.1.1(識別子と引用符)・4.1.2.1(文字列)・4.1.5(コメント) |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- 完全な SQL の構文解析はしません。誤検出を避けるため「抜け候補」と表示し、実行して確かめる前提です。
- 主キーによる関数従属は、利用者が入力した主キーを信じて扱います(PostgreSQL は主キーだけを認識します)。ユニーク制約は扱いません。
- サブクエリ・窓関数(OVER)・ROLLUP / CUBE / GROUPING SETS を含む項目は判定不能と表示します。
- 列名が重なる複数の表を結合した文で、別名をつけない列(修飾なし)の所属表は判定できません。HAVING と ORDER BY は調べません。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。