Лекции по предмету омбт (Oracle 9i маълумотлар базаси технологияси) Лекция Введение в Oracle 9i. План


Использование группировки для поиска повторяющихся данных



Download 3,91 Mb.
bet26/101
Sana25.02.2022
Hajmi3,91 Mb.
#291602
TuriЛекции
1   ...   22   23   24   25   26   27   28   29   ...   101
Bog'liq
Лекция Oracle

Использование группировки для поиска повторяющихся данных.

С помощью группировки записей можно находить дублирующие данные в таблице ORACLE. Создадим таблицу цветов и предположим, что мы случайно поместили туда повторяющиеся записи.


SQL > CREATE TABLE COLOR (


2 COLOR_CD VARCHAR2 (8) NOT NULL,
3 COLOR_DESCR VARCHAR2 (30));
TABLE CREATED.

SQL > INSERT INTO COLOR (COLOR_CD, COLOR_DESCR)


VALUES (‘RD’, ‘RED’);
1 ROWS CREATED.

SQL > INSERT INTO COLOR (COLOR_CD, COLOR_DESCR)


VALUES (‘GN’, ‘GREEN’);
1 ROWS CREATED.

SQL > INSERT INTO COLOR (COLOR_CD, COLOR_DESCR)


VALUES (‘BL’, ‘BLUE’);
1 ROWS CREATED.

SQL > INSERT INTO COLOR (COLOR_CD, COLOR_DESCR)


VALUES (‘GN’, ‘GREEN’);
1 ROWS CREATED.

SQL > INSERT INTO COLOR (COLOR_CD, COLOR_DESCR)


VALUES (‘BK’, ‘BLACK‘);
1 ROWS CREATED.
Отметим что таблица COLOR (цвета) содержит повторяющуюся записи для зелённого цвета.
SQL > SELECT * FROM COLOR;

COLOR CD COLOR_DESCR


RD RED
GN GREEN
BL BLUE
GN GREEN
BK BLACK

С помощью функции GROUP BY найдём те коды цветов, которые встречаются в таблице боле одного раза:


SQL > SELECT COUNT (COLOR_CD), MAX (COLOR_DESCR)



  1. FROM COLOR

  2. GROUP BY COLOR_CD

  3. HAVING COUNT (COLOR_CD) > 1;

COUNT COLOR_CD MAX COLOR_DESCR



  1. GREEN

Использование группировки для удаления дублирующих записей.

Приведём более сложный пример. Здесь повторяющиеся записи будут определяться дл комбинации столбцов EMP_DI (Идентификатор служащего) и PROJ_ID (Идентификатор проекта) с помощью команды GROUP_BY найдём дублирующие записи и удалим их. Вначале создадим таблицу.


SQL > CREATE TABLE PROJECT TEAM (


2 PROJTEAM_ID INTEGER NOT NULL,


3 EMP_ID INTEGER NOT NULL,
4 PROJ_ID INTEGER NOT NULL,
5 PROJTEAM_NAME VARCHAR2 (20));

TABLE CREATED.


SQL > INSERT INTO PRAJECT_TEAM

  1. (PROJTEAM_ID, EMP_ID, PROJ_ID, PROJTEAM_NAME)

  2. VALUES (1, 10, 221, ‘TIMETRACKING’);

1 ROW CREATED


SQL > INSERT INTO PROJECT_TEAM

  1. (PROJTEAM_ID, EMP_ID, PROJ_ID, PROJTEAM_NAME)

  2. VALUES (2, 30, 221, ‘TIMETRACKING’);

1 ROW CREATED


SQL > INSERT INTO PROJECT_TEAM

  1. (PROJTEAM_ID, EMP_ID, PROJ_ID, PROJTEAM_NAME)

  2. VALUES (3, 10, 221, ‘TIME TRACKING’);

1 ROW CREATED


SQL > INSERT INTO PROJECT_TEAM

  1. (PROJTEAM_ID, EMP_ID, PROJ_ID, PROJTEAM_NAME)

  2. VALUES (4, 10, 505, ‘ACCOUNT SISTEM’);

1 ROW CREATED


SQL > INSERT INTO PROJECT_TEAM

  1. (PROJTEAM_ID, EMP_ID, PROJ_ID, PROJTEAM_NAME)

  2. VALUES (5, 40, 505, ‘ACCOUNT SISTEM’);

1 ROW CREATED


SQL > INSERT INTO PROJECT_TEAM

  1. (PROJTEAM_ID, EMP_ID, PROJ_ID, PROJTEAM_NAME)

  2. VALUES (6, 102, 21, ‘HR REPORTING’);

1 ROW CREATED


Выведем на экран содержимое этой таблицы.


S QL > SELECT * FROM PROJECT_TEAM


Здесь дублирующей является следующая запись.


3 10 221 TIME TRACKING

Действительно, комбинация значений полей EMP_ID и PROJ_ID для этой записи не является уникальной в таблице PROJECT TEAM.


Запустим программу поиска повторяющихся записей.


SQL > SELECT COUNT (EMP_ID | | PROJ_ID), MAX (PROJTEAM_ID)



  1. FROM PROJECT_TEAM

  2. GROUP_BY EMP_ID, PROJ_ID

  3. HAVING COUNT (EMP_ID | | PROJ_ID) > 1;

COUNT (EMP_ID | | PROJ_ID) MAX (PROJTEAM_ID)


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

  1. 3

Теперь удалим дублирующую запись.


SQL > DELETE FROM PROJECT_TEAM



  1. WHERE PROJTEAM_ID = (SELECT MAX (PROJTEAM_ID)

  2. FROM PROJECT_TEAM

  3. GROUP BY EMP_ID, PROJ_ID

  4. HAVING COUNT (EMP_ID | | PROJ_ID) > 1);

1 ROW DELETED.


Всё, теперь убедимся, что программа сделала всё правильно.

SQL > SELECT * FROM PROJECT_TEAM


При наличии в таблице нескольких дублирующих записей пришлось бы неоднократно запускать этот оператор DELETE до тех пор, пока записи не перестали бы удаляться.





Download 3,91 Mb.

Do'stlaringiz bilan baham:
1   ...   22   23   24   25   26   27   28   29   ...   101




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish