MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) НАД (РАЗДЕЛЕНИЕ ПО deptno) Изявлението може да се разглежда в (приблизително) ред отдясно наляво:
НАД (РАЗДЕЛЯНЕ ПО deptno)означава разделяне на редовете на отделни групи отdeptno; след товаПОРЪЧАЙ ПО salозначава, че за всеки дял подредете редовете поsal(имплицитно с помощта наASCкрайна поръчка); след товаПАЗЕТЕ (ПЪРВО DENSE_RANKозначава да се даде (последователно) класиране на подредените редове за всеки дял (редове с идентични стойности за подредените колони ще получат един и същ ранг) и отхвърли всички редове, които не са класирани първи; и накраяMIN(sal)за останалите редове на всеки дял, върнете минималната заплата.
В този случай MIN и DENSE_RANK FIRST и двете работят на sal колона, така че ще направи същото нещо и KEEP (DENSE_RANK FIRST ORDER BY sal) е излишно.
Ако обаче използвате различна колона за минимума, тогава можете да видите ефектите:
SQL Fiddle
Настройка на схемата на Oracle 11g R2 :
СЪЗДАВАНЕ НА ТАБЛИЦА тест (име, sal, deptno) ASSELECT 'a', 1, 1 ОТ DUALUNION ALL SELECT 'b', 1, 1 ОТ DUALUNION ALL SELECT 'c', 1, 1 ОТ DUALUNION ALL SELECT 'd', 2, 1 ОТ DUALUNION ALL SELECT 'e', 3, 1 ОТ DUALUNION ALL SELECT 'f', 3, 1 ОТ DUALUNION ALL SELECT 'g', 4, 2 ОТ DUALUNION ALL SELECT 'h', 4, 2 ОТ DUALUNION ВСИЧКИ ИЗБЕРЕТЕ 'i', 5, 2 ОТ DUALUNION ВСИЧКИ ИЗБЕРЕТЕ 'j', 5, 2 ОТ DUAL; Запитване 1 :
ИЗБЕРЕТЕ DISTINCT MIN(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) NAVER (PARTITION BY deptno) AS min_sal_first_sal, MAX(sal) KEEP (DENSE_RANK FIRST ORDER BY sal) НАД (PARTITION BY sal_ deptno) AS_ MIN(име) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) AS min_name_first_sal, MAX(name) KEEP (DENSE_RANK FIRST ORDER BY sal) OVER (PARTITION BY deptno) AS max_name_first_sal, LASTKEEPRANK ORDER BY sal) OVER (PARTITION BY deptno) AS min_name_last_sal, MAX(name) KEEP (DENSE_RANK LAST ORDER BY sal) OVER (PARTITION BY deptno) AS max_name_last_sal, deptnoFROM тест Резултати :
<предварителен код>| MIN_SAL_FIRST_SAL | MAX_SAL_FIRST_SAL | MIN_NAME_FIRST_SAL | MAX_NAME_FIRST_SAL | MIN_NAME_LAST_SAL | MAX_NAME_LAST_SAL | DEPTNO ||-------------------|-------------------|------- -------------|-------------------|-------------- ----|-------------------|--------|| 1 | 1 | а | в | д | е | 1 || 4 | 4 | g | ч | аз | j | 2 |