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

Hàm SUM () trong PostgreSQL

Trong PostgreSQL, SUM() hàm tính tổng các giá trị đầu vào không phải null và trả về kết quả.

Nói cách khác, nó thêm số và trả về kết quả.

Ví dụ

Dưới đây là một ví dụ nhanh để chứng minh cách nó hoạt động:

SELECT SUM(amount) 
FROM payment;

Kết quả:

67416.51

Trong trường hợp này, amount là một cột trong payment bàn.

Để cung cấp thêm một chút ngữ cảnh này, đây là ảnh chụp nhanh của bảng:

+------------+-------------+----------+-----------+--------+----------------------------+
| payment_id | customer_id | staff_id | rental_id | amount |        payment_date        |
+------------+-------------+----------+-----------+--------+----------------------------+
|      16050 |         269 |        2 |         7 |   1.99 | 2017-01-24 21:40:19.996577 |
|      16051 |         269 |        1 |        98 |   0.99 | 2017-01-25 15:16:50.996577 |
|      16052 |         269 |        2 |       678 |   6.99 | 2017-01-28 21:44:14.996577 |
|      16053 |         269 |        2 |       703 |   0.99 | 2017-01-29 00:58:02.996577 |
|      16054 |         269 |        1 |       750 |   4.99 | 2017-01-29 08:10:06.996577 |
|      16055 |         269 |        2 |      1099 |   2.99 | 2017-01-31 12:23:14.996577 |
|      16056 |         270 |        1 |       193 |   1.99 | 2017-01-26 05:10:14.996577 |
|      16057 |         270 |        1 |      1040 |   4.99 | 2017-01-31 04:03:42.996577 |
|      16058 |         271 |        1 |      1096 |   8.99 | 2017-01-31 11:59:15.996577 |
...

Chúng tôi có thể thấy số tiền amount mà chúng tôi đã thêm vào trong ví dụ của mình.

Bảng chứa nhiều dữ liệu hơn thế, nhưng điều này cho bạn thấy ảnh chụp nhanh về các giá trị mà chúng tôi đã thêm vào.

Kết quả đã lọc

SUM() hàm hoạt động trên các hàng được trả về bởi truy vấn. Vì vậy, nếu bạn lọc kết quả, kết quả là SUM() sẽ phản ánh điều đó.

Cho phép lọc kết quả:

SELECT SUM(amount) 
FROM payment
WHERE customer_id = 269;

Kết quả:

129.70

Vì vậy, lần này chúng tôi đã nhận được tổng số tiền mà khách hàng đã thanh toán 269.

DISTINCT Từ khóa

Bạn có thể sử dụng DISTINCT từ khóa với SUM() để chỉ tính các giá trị riêng biệt. Nghĩa là, nếu có bất kỳ giá trị trùng lặp nào, chúng được coi là một giá trị.

Ví dụ:

SELECT 
    SUM(amount) AS "All",
    SUM(DISTINCT amount) AS "Distinct"
FROM payment;

Kết quả:

+----------+----------+
|   All    | Distinct |
+----------+----------+
| 67416.51 |   116.75 |
+----------+----------+

Ví dụ này so sánh kết quả của DISTINCT tùy chọn chống lại việc bỏ qua nó.

Trong trường hợp này, có một sự khác biệt rất lớn, điều này cho thấy rằng có rất nhiều giá trị trùng lặp trong cột đó.

Để xác minh điều này, chúng tôi có thể xuất các giá trị riêng biệt như sau:

SELECT DISTINCT amount
FROM payment;

Kết quả:

+--------+
| amount |
+--------+
|   1.99 |
|   3.98 |
|   7.99 |
|   5.99 |
|  10.99 |
|   2.99 |
|   8.97 |
|   8.99 |
|   3.99 |
|   9.98 |
|  11.99 |
|   7.98 |
|   6.99 |
|   0.00 |
|   4.99 |
|   5.98 |
|   0.99 |
|   1.98 |
|   9.99 |
+--------+
(19 rows)

Vì vậy, ví dụ của chúng tôi đã thêm tất cả các giá trị riêng biệt đó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để liệt kê các bản ghi có ngày từ 10 ngày qua?

  2. Xóa các hàng trùng lặp khỏi bảng nhỏ

  3. Pyodbc - Không tìm thấy tên nguồn dữ liệu và không có trình điều khiển mặc định nào được chỉ định

  4. Postgresql generate_series của tháng

  5. Giám sát PostgreSQL cần thiết - Phần 1