集約関数だけの SELECT
GROUP BY がなく、集約関数だけを選ぶ SELECT の例です。集約の外に列がなければ OK になり、抜け候補が出ないことを確かめます。
入力
SQL
SELECT max(price), min(price) FROM items
主キー(任意)
(空)
結果
エラー 0 件・警告 0 件・情報 1 件
指摘(エラー・警告・情報)
- 情報 全体 抜け候補は見つかりませんでした。
| 選択リストの項目 | 2 個 |
|---|---|
| 抜け候補 | 0 個 |
| OK | 2 個 |
| 判定不能 | 0 個 |
項目ごとの判定
| # | 選択リストの式 | 集約の外にある列 | 判定 | 理由 |
|---|---|---|---|---|
| 1 | max(price) | - | OK | 列は集約関数の中だけ |
| 2 | min(price) | - | OK | 列は集約関数の中だけ |
検算(この結果になる理由)
max と min はどちらも集約関数で、列 price は集約関数の中だけにあります。GROUP BY がなくても集約の外に列がないため、どちらの項目も OK で、抜け候補は 0 個です。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- 完全な SQL の構文解析はしません。誤検出を避けるため「抜け候補」と表示し、実行して確かめる前提です。
- 主キーによる関数従属は、利用者が入力した主キーを信じて扱います(PostgreSQL は主キーだけを認識します)。ユニーク制約は扱いません。
- サブクエリ・窓関数(OVER)・ROLLUP / CUBE / GROUPING SETS を含む項目は判定不能と表示します。
- 列名が重なる複数の表を結合した文で、別名をつけない列(修飾なし)の所属表は判定できません。HAVING と ORDER BY は調べません。
ご利用にあたって
- 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
- ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。