今回はPostgreSQLの比較演算子を使い、価格の条件に合うRowを取得する方法を整理します。
特に「100円以上」と「100円より高い」のように、境界の金額を含むかどうかを確認します。
所要時間は15分ほどです。
それでは、さっそく始めていきましょう!
今日のテーマと到達目標
テーマは比較演算子です。価格条件に合う演算子を選んでSQLを書き、境界の金額を含むかを説明できることを授業の合格条件にしました。
前提と用語の定義
| 用語 | 意味 |
|---|---|
| 比較演算子 | 2つの値の等しさや大小関係を判定する記号 |
| 条件式 | 各Rowについて条件を満たすかを判定する式 |
| WHERE句 | 結果に含めるRowの条件を指定する部分 |
| 結果セット | SQLの実行で返されるRowとColumnの集まり |
今回は既存のproductsを使います。1 Rowは商品1種類のデータです。
| Column | 意味 |
|---|---|
| product_id | 商品を識別する番号 |
| product_name | 商品名 |
| price_yen | 商品の価格。単位は円 |
比較する対象は、各Rowのprice_yenの値と、SQLで指定した整数の100です。今回の例では価格が記録されたRowを扱います。
構造を整理する
| 演算子 | 条件式 | 条件を満たす価格 | 100円を含むか |
|---|---|---|---|
| = | price_yen = 100 | 100円と等しい | 含む |
| <> | price_yen <> 100 | 100円と等しくない | 含まない |
| > | price_yen > 100 | 100円より高い | 含まない |
| >= | price_yen >= 100 | 100円以上 | 含む |
| < | price_yen < 100 | 100円より安い | 含まない |
| <= | price_yen <= 100 | 100円以下 | 含む |
>=と>では、100円ちょうどを条件に含めるかが異なります。<=と<も同様です。
PostgreSQLでの操作
「価格が100円以上の商品について全Columnを取得する」という問題に対して、次のSQLを書いて実行しました。
SELECT * FROM products WHERE price_yen >= 100;
FROM productsが取得元を指定し、WHERE price_yen >= 100が価格条件を指定します。SELECT *は全Columnを取得する指定です。
結果の確認
共有した実行画面では、次の1行が返されました。
product_id | product_name | price_yen
------------+--------------+-----------
1 | onigiri | 100
(1 行)
価格がちょうど100円のonigiriも、「100円以上」という条件を満たしています。
今日の演習と確認問題
「100円より高い」に変更すると含まれるか
条件をprice_yen > 100に変更した場合、100円のonigiriは結果に含まれるかを質問され、「含まれない」と回答しました。
この回答は正解です。>は等しい値を含みません。この条件の実行結果は今回共有しておらず、結果の予想として確認した内容です。
条件式を書き分ける
最後に、次の3問へ条件式で回答しました。
| 問題 | 回答 |
|---|---|
| 価格が100円以下 | price_yen <= 100 |
| 価格が100円より安い | price_yen < 100 |
| 価格が100円と等しくない | price_yen <> 100 |
3問とも正解でした。これらは条件式を書く確認問題であり、SQLを実行して取得した結果ではありません。
理解したこと・間違えたこと
- 「以上」「以下」では境界の値を含める。
- 「より高い」「より安い」では境界の値を含めない。
- 「等しくない」は
<>で記述できる。
共有したSQLはエラーなく実行でき、今回の確認問題にも正しく回答できました。
合格条件と学習記録
| 確認項目 | 根拠 |
|---|---|
| 価格条件に合うSQLを書ける | price_yen >= 100のSQLと1行の実行結果 |
| 境界の値を含むか説明できる | 100円より高い条件には100円の商品が含まれないと回答 |
| 条件式を書き分けられる | 100円以下・100円より安い・100円と等しくないの3問に正解 |
まとめ
| 指定したい条件 | 使用する演算子 |
|---|---|
| 等しい/等しくない | = / <> |
| より高い/以上 | > / >= |
| より安い/以下 | < / <= |
条件をSQLにするときは、境界の値を含めるかを確認して演算子を選びます。