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

Kondisi SQL pada fungsi Window

Operasi sekaligus:

Dan bab hebat Dampak pada Fungsi Jendela :

Misalkan Anda memiliki:

CREATE TABLE Test ( Id INT) ;
 
INSERT  INTO Test VALUES  ( 1001 ), ( 1002 ) ;

SELECT Id
FROM Test
WHERE Id = 1002
  AND ROW_NUMBER() OVER(ORDER BY Id) = 1;

Kasus 1:

If ( Id = 1002 ) is first, then if ( ROW_NUMBER() OVER(ORDER BY Id) = 1 )

Hasil:1002

Kasus 2:

If ( ROW_NUMBER() OVER(ORDER BY Id) = 1 ), then check if ( Id = 1002 )

Hasil:kosong

Untuk mendapatkan apa yang Anda inginkan, Anda dapat membungkus fungsi berjendela dengan CTE/subquery seperti dalam Gordon answer :

;WITH cte AS
(
  SELECT t.*, MAX(AVG) OVER (PARTITION BY city) AS average
  FROM avgTemperatures t
)
SELECT *
FROM cte
where average > 19
ORDER BY id;

db<>demo biola

Keluaran:

╔═════╦══════════╦═════╦═════════╗
║ id  ║   city   ║ avg ║ months  ║
╠═════╬══════════╬═════╬═════════╣
║   1 ║ New-York ║  20 ║     3   ║
║   2 ║ New-York ║  19 ║     6   ║
║   3 ║ New-York ║  15 ║    12   ║
║   4 ║ New-York ║  15 ║    24   ║
║  11 ║ Miami    ║  28 ║     1   ║
║  12 ║ Miami    ║  25 ║     4   ║
║  13 ║ Miami    ║  21 ║    12   ║
║  14 ║ Miami    ║  22 ║    15   ║
║  15 ║ Miami    ║  20 ║    24   ║
╚═════╩══════════╩═════╩═════════╝


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membuat database dengan flyway?

  2. Pencadangan Inkremental PostgreSQL dan Pemulihan Point-In-Time

  3. Postgres menyisipkan baris hanya jika jumlah baris di bawah batas

  4. Cara memulai ulang Postgresql

  5. Perbedaan antara indeks GiST dan GIN