Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 select в selecte  [new]
Nathgul
Member

Откуда:
Сообщений: 26
есть две таблицы тестовые EMP и DEPT.
CREATE TABLE ЕМР (EMPNO NUMBER(4) NOT NULL, ENARE VARCAR2 (10), JOB VARCA2 ( 9), 
                  MGR NUMBER ( 4), HIREDATE DATE, SAL NUMBER(71 2), СОММ NUMBER(7, 2),
                  DEPTNO NUMBER(2));

INSERT INTO ЕМР VALUES (7369, 'SMITH', 'CLERK',	7902,
                        TO_DATE('17-DEC-1980', 'DD-MON-YYYY'),	800, NULL, 20);

INSERT INTO ЕМР VALUES (7499, 'ALLEN',	'SALESMAN',	7698,
                       TO_DATE('20-FEB-1981', 'DD-MON-YYYY'), 1600,	300, 30);

INSERT INTO ЕМР VALUES (7521, 'WARD', ' SALES№N ' ,	7698,
                       TO_DATE('22-FEB-1981', 'DD-MON-YYYY'), 1250,	500, 30);

INSERT INTO ЕМР VALUES (7566, 'JONES', 'MANAGER', 7839, TO_DATE('2-APR-1981', 
                       'DD-MON-YYYY'), 2975, NULL, 20); 

INSERT INTO ЕМР VALUES (7654, 'MARTIN' , ' SALES№N ' ,	7698,
                        TO_DATE('28-SEP-1981', 'DD-MON-YYYY'), 1250, 1400, 30); 

INSERT INTO EMP VALUES (7698, 'BLAKE', '№NAGER',	7839,
                        TO_DATE('1-MAY-1981', 'DD-MON-YYYY'), 2850, NULL, 30); 

INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER',	7839,
                        TO_DATE('9-JUN-1981', 'DD-MON-YYYY'), 2450, NULL, 10); 

INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566, 
                        TO_DATE('09-DEC-1982', 'DD-MON-YYYY'), 3000, NULL, 20); 

INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL, 
                       TO_DATE('17-NOV-1981', 'DD-MON-YYYY'), 5000, NULL, 10); 

INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN',	7698,
                       TO_DATE('8-SEP-1981', 'DD-MON-YYYY'), 1500,	0, 30);

INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788, 
                        TO_DATE('12-JAN-1983', 'DD-MON-YYYY'), 1100, NULL, 20) ; 

INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698, 
                        TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 950, NULL, 30); 

INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566, 
                        TO_DATE('3-DEC-1981', 'DD-MON-YYYY'), 3000, NULL, 20); 

INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782, 
                        TO_DATE('23-JAN-1982', 'DD-MON-YYYY'), 1300, NULL, 10);

CREATE TABLE DEPT (DEPTNO NUMBER(2),
                  DNAME VARCHAR2(14),
                  LOC VARCHAR2(13)
                  ) ;

INSERT INTO DEPT VALUES ( 1 0 , 'ACCOUNTING', 'NEW YОRК');
INSERT INTO DEPT VALUES ( 2 0 , 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES ( 3 0 , 'SALES', 'CHICAG0');
INSERT INTO DEPT VALUES ( 4 0 , '0PERATIONS', 'BOSTON');


по запросу
select dept.DNAME as DNAME, emp.ename as ENAME from emp left join dept on emp.DEPTNO = dept.DEPTNO;
получаю результат:
DNAME ENAME
-------------- ----------
ACCOUNTING CLARK
ACCOUNTING KING
ACCOUNTING MILLER
RESEARCH SMITH
RESEARCH JONES
RESEARCH FORD
SALES ALLEN
SALES WARD
SALES MARTIN
SALES BLAKE
SALES TURNER

DNAME ENAME
-------------- ----------
SALES JAMES

Кстати непонятно почему отделяется последняя строка на выводе сотрудников((

по запросу
select  dept.DNAME as DNAME, AVG(emp.sal) from emp left join dept on emp.DEPTNO = dept.DEPTNO GROUP BY dept.DNAME;
получаю среднюю зп по всему отделу

DNAME AVG(EMP.SAL)
-------------- ------------
RESEARCH 2258,33333
SALES 1566,66667
ACCOUNTING 2916,66667

Вопрос как привести таблицу к виду, чтобы появился третий столбец напротив каждой фамилии и там отображалась средняя зарплата отдела, в котором находится человек? заранее спасибо)

DNAME ENAME AVG(EMP.SAL)
-------------- --------------------------
ACCOUNTING CLARK 2916,66667
ACCOUNTING KING 2916,66667
ACCOUNTING MILLER 2916,66667
RESEARCH SMITH 2258,33333
RESEARCH JONES 2258,33333
RESEARCH FORD 2258,33333
11 сен 19, 09:41    [21968282]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
Dshedoo
Member

Откуда:
Сообщений: 370
Оконная функция.
11 сен 19, 09:45    [21968284]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
Nathgul
Member

Откуда:
Сообщений: 26
Dshedoo
Оконная функция.
конкретно в моем примере как правильно составить? читаю про оконные функции, соть понимаю, но нужно более менее готовое решение для моей задачи. Спасибо.
11 сен 19, 09:50    [21968292]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
alex-ls
Member

Откуда: Иркутская обл - Пенза - Москва
Сообщений: 6706
AVG + OVER
11 сен 19, 10:00    [21968301]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
Nathgul
Member

Откуда:
Сообщений: 26
alex-ls
AVG + OVER
Спасибо большое, все получилось)
11 сен 19, 10:14    [21968308]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
Nathgul
Member

Откуда:
Сообщений: 26
Dshedoo
Оконная функция.
Спасибо от души) разобрался в синтаксисе.
Результат сосбтвенно)
DNAME ENAME AVG_BY_DEPTNO MAX_BY_DEPTNO
-------------- ---------- ------------- -------------
ACCOUNTING KING 2916,66667 5000
ACCOUNTING CLARK 2916,66667 5000
ACCOUNTING MILLER 2916,66667 5000
RESEARCH JONES 2258,33333 3000
RESEARCH SMITH 2258,33333 3000
RESEARCH FORD 2258,33333 3000
SALES ALLEN 1566,66667 2850
SALES WARD 1566,66667 2850
SALES MARTIN 1566,66667 2850
SALES BLAKE 1566,66667 2850
SALES TURNER 1566,66667 2850

DNAME ENAME AVG_BY_DEPTNO MAX_BY_DEPTNO
-------------- ---------- ------------- -------------
SALES JAMES 1566,66667 2850
Вопрос почему из 12-ти записей, последняя всегда отделена?)
11 сен 19, 10:15    [21968310]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
MazoHist
Member

Откуда:
Сообщений: 112
RTFM set pagesize

SQL> set pagesize 10
SQL> select rownum from dual connect by level < 15;

    ROWNUM
----------
         1
         2
         3
         4
         5
         6
         7

    ROWNUM
----------
         8
         9
        10
        11
        12
        13
        14

14 rows selected.

SQL> set pagesize 20
SQL> select rownum from dual connect by level < 15;

    ROWNUM
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10
        11
        12
        13
        14

14 rows selected.
11 сен 19, 10:50    [21968346]     Ответить | Цитировать Сообщить модератору
 Re: select в selecte  [new]
Nathgul
Member

Откуда:
Сообщений: 26
MazoHist, пасип))
11 сен 19, 12:12    [21968410]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить