現在、sqlを勉強しており、
ABS関数について学びました。
しかしその使用シーンが思い浮かびません。
どのような場面で絶対値を用いたSQL文を使用するのでしょうか?
宜しくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
「ある時刻に最も近いタイムスタンプのエントリ」を抽出したい場合、
sql
1ORDER BY ABS(指定時刻 - タイムスタンプ) 2LIMIT 1
などと書けますよね。
投稿2015/08/20 07:11
総合スコア5570
0
SQL
1select id, price, next_price, ABS(CAST(price - next_price AS SIGNED)), 2CASE WHEN SIGN(CAST(price - next_price AS SIGNED))=0 THEN '同じ' 3 WHEN SIGN(CAST(price - next_price AS SIGNED))=1 THEN '高い' 4 WHEN SIGN(CAST(price - next_price AS SIGNED))=-1 THEN '安い' 5 ELSE null END 6from ( 7select id, p1.price, 8(SELECT p2.price 9 FROM item p2 10 WHERE p2.id > p1.id order by id limit 1) AS next_price 11 from item p1 order by id 12 ) t1
一つの表で、次のレコードとの金額差を出したい時に、
マイナスで表示しない(符号はSIGNで管理する)というケースも体験したことはありますが、
稀ですね。
投稿2015/08/20 07:42
総合スコア856
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
学んだからといって無理に使い方を想像しなくてもよいと思いますよ
私の知る具体例としては、、、
地震計が計測する加速度データは符号付きです
生の観測値としてはデータベース内に符号付きで正しく格納されている必要がありますが
「最大化速度」を求める時に絶対値で比較する必要があるためABS関数を利用します
実装方法がそれでよいかどうかは別のはなし(システムの背景、制約、文化、いろいろある)で、「絶対値の取得が必要な時にその対応の幅を広げることができた」、ということに意義があるかなと思います
投稿2015/08/20 07:15
総合スコア3116
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
直接SQLとして取得する場面は少ないと思いますが、ストアドプロシージャなど、SQLでDB内にロジックを格納するような使い方があるので、そういう場面では数学的な演算が役に立つこともあるでしょう。
投稿2015/08/20 05:43
総合スコア146577
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/20 07:34