PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Warunek SQL w funkcji okna

Operacja jednorazowa:

I świetny rozdział Wpływ na funkcje okien :

Załóżmy, że masz:

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;

Przypadek 1:

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

Wynik:1002

Przypadek 2:

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

Wynik:pusty

Aby uzyskać to, czego chcesz, możesz zawinąć funkcję okienkową za pomocą CTE/subquery jak w odpowiedź Gordona :

;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<>demonstracja skrzypiec

Wyjście:

╔═════╦══════════╦═════╦═════════╗
║ 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. Jak duży jest bufor w PostgreSQL

  2. R2DBC i wyliczenie (PostgreSQL)

  3. Synchronizacja bazy danych 2 nie powiodła się

  4. Zbuduj obraz centrum dokowania klawiatury w trybie openshift za pomocą polecenia nowej aplikacji

  5. Tablica Enum w Postgresie z SQLAlchemy