Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
05.06.2015
Размер:
385 Кб
Скачать

9 Rows selected.

Q2_7

Выбор по критерию в HAVING для GROUP BY

Должности по которым максимальная зарплата не меньше 3000

SQL> select job,max(sal) from EMP

group by job

having max(sal) >= 3000;

JOB MAX(SAL)

--------- ---------

ANALYST 3000

PRESIDENT 5000

Q2_8

Определить, сколько раз символ «S» встречается в названиях отделов

SQL> select dname from dept;

DNAME

--------------

ACCOUNTING

RESEARCH

SALES

OPERATIONS

SQL> select length(dname) from dept;

LENGTH(DNAME)

-------------

10

8

5

10

--Функция translate в строке, содержащейся в поле dname, заменяет символы из этой

-- строки, если они встречаются в списке 'AS' на символы из списка 'A'. При такой

--замене 'A' "меняется" на 'A', 'S' меняется на ..., а вот для 'S' нет замены, так как

--список замен включает только одну букву 'A'. В этом случае (когда нет замены)

--Oracle убирает букву 'S' из строки, содержащейся в поле dname.

SQL> select translate(dname,'AS','A') from dept;

TRANSLATE (DNAM)

--------------

ACCOUNTING

REEARCH

ALE

OPERATION

SQL> select length(translate(dname,'AS','A')) from dept;

LENGTH(TRANSLATE(DNAME,'AS','A'))

---------------------------------

10

7

3

9

SQL> select length(dname) - length(translate(dname,'AS','A')) as NS from dept;

NS

---------

0

1

2

1

--Функция TRANSLATE

--Syntax

-- TRANSLATE(char, from, to)

--Purpose

-- Returns char with all occurrences of each character in from replaced by its corresponding

--character in to. Characters in char that are not in from are not replaced. The argument from

--can contain more characters than to. In this case, the extra characters at the end of from

--have no corresponding characters in to. If these extra characters appear in char, they are

--removed from the return value. You cannot use an empty string for to to remove all

--characters in from from the return value. Oracle interprets the empty string as null, and if

--this function has a null argument, it returns null.

--Example

SELECT TRANSLATE('2KRW229',

'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',

'0123456789')

"Translate example"

FROM DUAL;

Translate example

-----------------

2229

Раздел 3 Выборка данных из нескольких таблиц

3.1. Подзапросы

Q3_1

Использование подзапросов

Найти служащих , получающих минимальную зарплату

SQL> select ename name,sal from EMP

where sal=(select min(sal) from EMP);

NAME SAL

---------- ---------

SMITH 800

Q3_2

Сотрудники отдела продаж (SALES) , занимающих ту же должность , что и служащий SMITH

SQL> select EMPNO,ename,job,sal

from EMP

where job=(select job from EMP

where ename='SMITH')

and DEPTNO=(select DEPTNO from DEPT

where dname='SALES');

EMPNO ENAME JOB SAL

--------- ---------- --------- ---------

7900 JAMES CLERK 950

Q3_3

Служащие получающие минимальный оклад в своем отделе

SQL> select DEPTNO dept,ename name,sal from EMP

where (sal,DEPTNO) in (select min(sal),DEPTNO

from EMP

group by DEPTNO);

DEPTNO NAME SAL

--------- ---------- ---------