SQL 比較関数(Greatest、Least)について
お久しぶりです。
<本日の題材>
比較関数について
データベースの違いによって、あるDBでは使用できる関数が、別のDBでは使用できないケースがあります。その一例として、複数項目の最大値・最小値を取得するSQLを、今回は見てみたいと思います。
データベースがOracleの場合には、GREATEST関数・LEAST関数というのがあります。
例)金額に関する3つの項目の中から最大値を求める。具体的には
item_no | priceA | priceB | priceC |
—————————————————–
item01  |  6000 |  2000 |  3000
item02  |  1000 |  7500 |  4000
item03  |  1500 |  3000 |  8000
というテーブルがあった場合に、以下のような結果を出したいとします。
item_no | 最大値 | 最小値
 ——————————————
 item01  |  6000 |  2000
 item02  |  7500 |  1000
 item03  |  8000 |  1500
SQL> SELECT item_no
, GREATEST( priceA, priceB, priceC ) AS 最大値
, LEAST( priceA, priceB, priceC ) AS 最小値
 FROM テーブル名;
これは、MySQLでも同様の関数があります。
 GREATEST()、LEAST()
上記をSQL Serverで行おうとすると、同様の関数がないため、下記のようなSQLを実行するかたちになります。
SELECT  item_no, MAX(price1) AS 最大値, MIN(price2) AS 最小値 FROM
(           SELECT item_no, priceA AS price1, priceA AS price2 FROM テーブル名
UNION ALL SELECT item_no, priceB AS price1, priceB AS price2 FROM テーブル名
UNION ALL SELECT item_no, priceC AS price1, priceC AS price2 FROM テーブル名
) AS TBL
GROUP BY item_no
ORDER BY item_no;





ディスカッション
コメント一覧
まだ、コメントがありません