PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apakah ada yang setara dengan Postgresql SETIAP fungsi agregat pada RDBMS lain?

Meniru EVERY() dengan CASE dan SUM()

Faktanya, artikel ini menjelaskan bagaimana EVERY() dapat ditiru melalui CASE dan SUM() . Dua pernyataan berikut ekuivalen:

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;

Hal yang sama berlaku untuk EVERY() fungsi jendela:

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;

Standar SQL

SQL:2008 standar menyebutkan EVERY fungsi agregat:

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
  | [...]

Tetapi fitur standar SQL "canggih" tidak sering diimplementasikan oleh database. Oracle 11g misalnya, tidak mendukungnya, begitu pula SQL Server 2012 .

Dengan HSQLDB , namun, Anda mungkin lebih beruntung. HSQLDB 2.x sangat sesuai standar, juga MySQL mengetahui BIT_AND() fungsi agregat, yang merupakan alias non-standar untuk EVERY() , juga didukung oleh Postgres.

Catatan, beberapa database memungkinkan untuk menulis fungsi agregat yang ditentukan pengguna, jadi Anda juga dapat mengimplementasikan EVERY() sendiri.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Windows Postgres berfungsi dengan grup agregat oleh

  2. Masalah tipe data Serial di DBeaver &PostgreSQL

  3. Cara mengatasi Metode org.postgresql.jdbc.PgConnection.createBlob() belum diimplementasikan

  4. Batasan postgres

  5. Bagaimana cara membuat fungsi windowing khusus untuk PostgreSQL? (Contoh Rata-Rata Berjalan)