sql >> データベース >  >> RDS >> PostgreSQL

postgresql戻り値がnullの場合は0を返します

    合体を使用する

    COALESCE(value [, ...])
    
    The COALESCE function returns the first of its arguments that is not null.  
    Null is returned only if all arguments are null. It is often
    used to substitute a default value for null values when data is
    retrieved for display.
    

    編集

    これがCOALESCEの例です クエリで:

    SELECT AVG( price )
    FROM(
          SELECT *, cume_dist() OVER ( ORDER BY price DESC ) FROM web_price_scan
          WHERE listing_Type = 'AARM'
            AND u_kbalikepartnumbers_id = 1000307
            AND ( EXTRACT( DAY FROM ( NOW() - dateEnded ) ) ) * 24 < 48
            AND COALESCE( price, 0 ) > ( SELECT AVG( COALESCE( price, 0 ) )* 0.50
                                         FROM ( SELECT *, cume_dist() OVER ( ORDER BY price DESC )
                                               FROM web_price_scan
                                               WHERE listing_Type='AARM'
                                                 AND u_kbalikepartnumbers_id = 1000307
                                                 AND ( EXTRACT( DAY FROM ( NOW() - dateEnded ) ) ) * 24 < 48
                                             ) g
                                        WHERE cume_dist < 0.50
                                      )
            AND COALESCE( price, 0 ) < ( SELECT AVG( COALESCE( price, 0 ) ) *2
                                         FROM( SELECT *, cume_dist() OVER ( ORDER BY price desc )
                                               FROM web_price_scan
                                               WHERE listing_Type='AARM'
                                                 AND u_kbalikepartnumbers_id = 1000307
                                                 AND ( EXTRACT( DAY FROM ( NOW() - dateEnded ) ) ) * 24 < 48
                                             ) d
                                         WHERE cume_dist < 0.50)
         )s
    HAVING COUNT(*) > 5
    

    IMHO COALESCE AVGと一緒に使用しないでください 値を変更するためです。 NULL 未知を意味し、他には何もありません。 SUMで使用するのとは異なります 。この例では、AVGを置き換えると SUMによる 、結果は歪められません。合計に0を追加しても誰も害はありませんが、未知の値に対して0で平均を計算すると、実際の平均は得られません。

    その場合、price IS NOT NULLを追加します WHERE これらの未知の値を回避するための句。



    1. MySQLクイックヒント:DROPUSERコマンドの使用

    2. 行が存在しない場合のOracle挿入

    3. WebページのHTMLテーブル内にMySQLデータベーステーブルの値を表示する

    4. IDが一致しないsql行を別のテーブルから削除します