powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select в selecte
8 сообщений из 8, страница 1 из 1
select в selecte
    #39860143
Nathgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть две таблицы тестовые 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
select в selecte
    #39860145
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оконная функция.
...
Рейтинг: 0 / 0
select в selecte
    #39860151
Nathgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DshedooОконная функция. конкретно в моем примере как правильно составить? читаю про оконные функции, соть понимаю, но нужно более менее готовое решение для моей задачи. Спасибо.
...
Рейтинг: 0 / 0
select в selecte
    #39860158
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AVG + OVER
...
Рейтинг: 0 / 0
select в selecte
    #39860164
Nathgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex-lsAVG + OVERСпасибо большое, все получилось)
...
Рейтинг: 0 / 0
select в selecte
    #39860165
Nathgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
select в selecte
    #39860184
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
select в selecte
    #39860226
Nathgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MazoHist, пасип))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / select в selecte
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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