sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL-tilstand på vinduesfunktion

All-at-Once operation:

Og fantastisk kapitel Indvirkning på vinduesfunktioner :

Antag, at du har:

CREATE TABLE Test (Id INT); INSERT INTO Test VALUES ( 1001 ), ( 1002 );SELECT IdFROM TestWHERE Id =1002 AND ROW_NUMBER() OVER(ORDER BY Id) =1; 

Case 1:

Hvis ( Id =1002 ) er først, så hvis ( ROW_NUMBER() OVER(ORDER BY Id) =1 )

Resultat:1002

Case 2:

Hvis ( ROW_NUMBER() OVER(ORDER BY Id) =1 ), så tjek om ( Id =1002 )

Resultat:tom

For at få det, du ønsker, kan du ombryde en vinduesfunktion med CTE/subquery som i Gordon-svar :

;WITH cte AS( SELECT t.*, MAX(AVG) OVER (OPDELING EFTER by) SOM gennemsnit FRA avgTemperatures t)SELECT *FROM ctewhere gennemsnit> 19ORDER BY id; 

db<>fiddle-demo

Output:

meget  ║ 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. Hvordan laver man en kaskadeopdatering?

  2. Sådan får du den sidste række i et Oracle en tabel

  3. Fejl ved installation af mysql2 gem (Windows 8)

  4. ORA-00918:kolonne tvetydigt defineret Jeg får denne fejl