PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

postgresql trả về 0 nếu giá trị trả về là null

sử dụng liên kết

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.

Chỉnh sửa

Đây là một ví dụ về COALESCE với truy vấn của bạn:

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 không nên sử dụng với AVG vì nó sửa đổi giá trị. NULL có nghĩa là không biết và không có gì khác. Nó không giống như sử dụng nó trong SUM . Trong ví dụ này, nếu chúng ta thay thế AVG bởi SUM , kết quả là không bị bóp méo. Việc thêm 0 vào một tổng không gây hại cho bất kỳ ai nhưng tính toán trung bình với 0 cho các giá trị không xác định, bạn sẽ không nhận được giá trị trung bình thực.

Trong trường hợp đó, tôi sẽ thêm price IS NOT NULL trong WHERE mệnh đề để tránh những giá trị không xác định này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách triển khai PostgreSQL vào Docker Container bằng ClusterControl

  2. Có thể thay đổi thứ tự tự nhiên của các cột trong Postgres không?

  3. Bảng in không vừa với kích thước trang

  4. Không thể cài đặt PostgreSQL:Đã xảy ra lỗi khi thực thi trình cài đặt thời gian chạy Microsoft VC ++ trên Windows XP

  5. SQLalchemy không thực hiện các thay đổi khi thiết lập vai trò