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

Sắp xếp các tháng trong khi tôi đang chuyển chúng thành văn bản

Tôi đề xuất date_trunc() thay vì. Nó cắt bớt date / timestamp đến đơn vị nhất định.

Vì hai lý do:

  1. Bạn muốn số lượng đơn đặt hàng vào tháng 8 của một năm cụ thể, chẳng hạn như năm 2012, không tổng cho tháng 8 của tất cả các năm trong bảng. date_trunc('month', orderdate) thực hiện chính xác điều đó và ngăn chặn việc bạn ngẫu nhiên kết hợp nhiều năm. Bạn nhận được nhiều hàng trong nhiều năm.

  2. Bạn có thể ORDER BY GROUP BY một biểu thức này, truy vấn nhanh hơn một chút.

SELECT to_char(date_trunc('month', orderdate), 'Mon') AS "Month" -- repeat expr.
      ,count(*) AS "Quantity"
FROM   orders
GROUP  BY date_trunc('month', orderdate)   -- 1 item covers it
ORDER  BY date_trunc('month', orderdate);

db <> fiddle tại đây
sqlfiddle

Đối với tên tháng đầy đủ, như ví dụ đầu tiên của bạn ngụ ý:

to_char(date_col, 'Month')

Đối với các tên không phải tiếng Anh, được bản địa hóa:

to_char(date_col, 'TMMonth')

Chi tiết trong sách hướng dẫn.



  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 để kiểm tra xem lược đồ công khai PostgreSQL có tồn tại hay không?

  2. Xác thực mật khẩu không thành công với mật khẩu phức tạp

  3. Hiệu suất khác biệt:điều kiện được đặt tại mệnh đề INNER JOIN so với WHERE

  4. Django Nhập-Xuất Nhập Giá trị khóa trùng lặp vi phạm Lỗi

  5. Postgresql xóa chậm từ nơi tồn tại