Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select в selecte / 8 сообщений из 8, страница 1 из 1
11.09.2019, 09:41
    #39860143
Nathgul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
есть две таблицы тестовые EMP и DEPT.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
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');



по запросу
Код: plsql
1.
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

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

по запросу
Код: plsql
1.
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
...
Рейтинг: 0 / 0
11.09.2019, 09:45
    #39860145
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
Оконная функция.
...
Рейтинг: 0 / 0
11.09.2019, 09:50
    #39860151
Nathgul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
DshedooОконная функция. конкретно в моем примере как правильно составить? читаю про оконные функции, соть понимаю, но нужно более менее готовое решение для моей задачи. Спасибо.
...
Рейтинг: 0 / 0
11.09.2019, 10:00
    #39860158
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
AVG + OVER
...
Рейтинг: 0 / 0
11.09.2019, 10:14
    #39860164
Nathgul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
alex-lsAVG + OVERСпасибо большое, все получилось)
...
Рейтинг: 0 / 0
11.09.2019, 10:15
    #39860165
Nathgul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
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-ти записей, последняя всегда отделена?)
...
Рейтинг: 0 / 0
11.09.2019, 10:50
    #39860184
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
RTFM set pagesize

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
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.
...
Рейтинг: 0 / 0
11.09.2019, 12:12
    #39860226
Nathgul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select в selecte
MazoHist, пасип))
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select в selecte / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]