Я пытаюсь получить новое представление, в котором я могу отображать ОДНУ запись для наиболее высокооплачиваемого сотрудника в каждом магазине.
Вывод (ОПРЕДЕЛЕНО) Отображение ТОП-сотрудника с оплатой труда в каждом магазине STORE_ID - 1 не имеет сотрудниковпоэтому его нет в отчете
ENAME JOB STORE_ID MAX(SAL) CITY
ALLEN SALESMAN 2 1600 New York City
KING PRESIDENT 3 5000 Chicago
SCOTT ANALYST 4 3000 Philadelphia
АКТУАЛЬНЫЙ ВЫХОД
ENAME JOB STORE_ID MAX(SAL) CITY
ALLEN SALESMAN 2 1600 New York City
TURNER SALESMAN 2 1500 New York City
WARD SALESMAN 2 1250 New York City
MARTIN SALESMAN 2 1250 New York City
KING PRESIDENT 3 5000 Chicago
BLAKE MANAGER 3 2850 Chicago
CLARK MANAGER 3 2450 Chicago
SCOTT ANALYST 4 3000 Philadelphia
FORD ANALYST 4 3000 Philadelphia
JONES MANAGER 4 2975 Philadelphia
MILLER CLERK 4 1300 Philadelphia
ADAMS CLERK 4 1100 Philadelphia
JAMES CLERK 4 950 Philadelphia
SMITH CLERK 4 800 Philadelphia
Я могу использовать только SELECT, GROUP BY, HAVING, ORDER BY, INNER JOIN (или другие типы JOINS).Я не могу использовать раздел, WITH
Этот QUERY действительно производит необходимые строки, но он содержит все остальные (в дополнение к самой высокооплачиваемой)
DDL FOR STORES
CREATE TABLE "STORES"
( "STORE_ID" NUMBER NOT NULL ENABLE,
"CITY" VARCHAR2(50),
PRIMARY KEY ("STORE_ID")
USING INDEX ENABLE
)
/
DDL ДЛЯ СОТРУДНИКОВ
CREATE TABLE "EMPLOYEES"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"STORE_ID" NUMBER
)
/
CREATE INDEX "EMP_NAME_IDEX" ON "EMPLOYEES" ("ENAME")
/
CREATE INDEX "EMP_NAME_JOB_DATE_IDX" ON "EMPLOYEES" ("ENAME", "JOB", "HIREDATE")
/
Первый вопрос был о плохом синтаксисе SQL.Этот пытается найти наиболее высокооплачиваемого сотрудника в каждом магазине