PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Функция SQL Condition on Window

Операция "всичко наведнъж":

И страхотна глава Въздействие върху функциите на прозорците :

Да предположим, че имате:

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

Случай 1:

Ако ( Id =1002 ) е първо, тогава ако ( ROW_NUMBER() OVER(ORDER BY Id) =1 )

Резултат:1002

Случай 2:

Ако ( ROW_NUMBER() OVER(ORDER BY Id) =1), тогава проверете дали ( Id =1002)

Резултат:празен

За да получите това, което искате, можете да обвиете прозоречна функция с CTE/subquery като в отговор на Гордън :

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

db<>демонстрация на fiddle

Изход:

<предварителен код>╔═════╦══════════╦═════╦═════════╗║ id ║ град ║ ║ ср. ║ ═════╬══════════╬═════╬═════════╣║ 1 ║ New-York ║ 20 Y║k ║ 20 ║ 3 ║ 19 ║ 6 ║║ 3 ║ New York ║ 15 ║ 12 ║║ 4 ║ New York ║ 15 ║ 24 ║║ 11 ║ Маями ║ 28 ║ 1 ║║ 12 ║ Маями ║ 25 ║ 4 ║║ 13 ║ Маями ║ 21 ║ 12 ║║ 14 ║ Маями ║ 22 ║ 15 ║║ 15 ║ Маями ║ 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. Може ли Alembic да генерира автоматично промени в колони?

  2. Сканиране на индекс за сравнение в няколко колони - неравномерно подреждане на колони на индекси

  3. Как да мигрираме съществуваща Postgres таблица към разделена таблица възможно най-прозрачно?

  4. Postgresql -- почистване на HTML тагове в средата на низа

  5. грешка при кодиране на postgres в приложението sidekiq