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

Có hàm tổng hợp nào tương đương với Postgresql MỌI hàm tổng hợp trên RDBMS khác không?

Mô phỏng EVERY() với CASESUM()

Trên thực tế, bài viết này mô tả cách EVERY() có thể được mô phỏng qua CASESUM() . Hai câu lệnh sau là tương đương:

SELECT EVERY(id < 10)
FROM book

SELECT CASE SUM(CASE WHEN id < 10 THEN 0 ELSE 1 END) 
         WHEN 0 THEN 1 
         ELSE 0 
       END
FROM book;

Điều này cũng đúng với EVERY() chức năng cửa sổ:

SELECT 
  book.*, 
  EVERY(title LIKE '%a') OVER (PARTITION BY author_id)
FROM book

SELECT
  book.*,
  CASE SUM(CASE WHEN title LIKE '%a' THEN 0 ELSE 1 END)
       OVER(PARTITION BY author_id)
    WHEN 0 THEN 1 
    ELSE 0
  END
FROM book;

Chuẩn SQL

SQL:2008 tiêu chuẩn đề cập đến EVERY chức năng tổng hợp:

10.9 <aggregate function>

[...]

<aggregate function> ::=
  COUNT <left paren> <asterisk> <right paren> [ <filter clause> ]
  | <general set function> [ <filter clause> ]
  | <binary set function> [ <filter clause> ]
  | <ordered set function> [ <filter clause> ]

<general set function> ::=
  <set function type> <left paren> [ <set quantifier> ]
  <value expression> <right paren>

<set function type> ::=
  <computational operation>

<computational operation> ::=
  AVG
  | MAX
  | MIN
  | SUM
  | EVERY
  | [...]

Nhưng các tính năng tiêu chuẩn SQL "nâng cao" thường không được cơ sở dữ liệu thực hiện. Oracle 11g ví dụ:không hỗ trợ nó, SQL Server 2012 .

Với HSQLDB , tuy nhiên, bạn có thể may mắn hơn. HSQLDB 2.x rất tuân thủ tiêu chuẩn, cũng MySQL biết BIT_AND() hàm tổng hợp, là một bí danh không chuẩn cho EVERY() , cũng được hỗ trợ bởi Postgres.

Lưu ý, một số cơ sở dữ liệu cho phép viết các hàm tổng hợp do người dùng xác định, vì vậy bạn cũng có thể triển khai EVERY() bản thân bạ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. Postgresql:Làm thế nào để thoát khỏi các dấu ngoặc kép trong trình kích hoạt Cơ sở dữ liệu?

  2. Nhận được lỗi xác thực không thành công với postgresql từ dòng lệnh

  3. Tạo ERD cho cơ sở dữ liệu hiện có

  4. Datatables - Json output - PostgreSQL - Trả về null

  5. Truy vấn truy xuất số lượng mỗi giờ và số 0 nếu không có