Database
 sql >> база данни >  >> RDS >> Database

SQL Изберете Различен

SQL заявката DISTINCT се използва за извличане на уникални стойности от таблиците с помощта на оператора SELECT в SQL.

Може да възникне ситуация, когато искате да извлечете уникалните стойности от таблиците, но дублиращи се стойности също присъстват вътре в таблицата. В такъв случай трябва да използвате заявката SELECT DISTINCT, за да премахнете дублиращи се стойности и да извлечете уникални стойности от таблицата.

Синтаксис на израза SELECT DISTINCT:

SELECT DISTINCT columnname1, columnname2 FROM table_name;

Помислете за съществуващите таблици на служителите, които имат следните записи:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65500 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
1003 НИХИЛ VANI 50500 ДЖАЙПУР FMW 2
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
2003 РУЧИКА ДЖЕЙН 50 000 МУМБАЙ ТЕСТВАНЕ 4
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3002 ANUJA WANRE 50500 ДЖАЙПУР FMW 2
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4

Нека разберем SELECT DISTINCT с помощта на пример.

Пример 1: Напишете заявка, за да извлечете подробности за служителите, чиято заплата на служителите е по-голяма от 55 000, без да използвате ключовата дума DISTINCT.

SELECT * FROM EMPLOYEES WHERE SALARY > 55000;

В горното изявление извлечехме данните за служителя от таблицата на служителя, чиято заплата на служителя е по-голяма от 55 000, включително дублиращите се стойности.

Резултатът за следния израз:

ИДЕНТИФИКАТОР НА СЛУЖИТЕЛЯ FIRST_NAME LAST_NAME ЗАПЛАТА ГРАД ОТДЕЛ MANAGERID
1001 VAIBHAVI МИШРА 65 000 ПУНА ORACLE 1
1002 VAIBHAV ШАРМА 60 000 NOIDA ORACLE 1
2001 PRACHI ШАРМА 55500 ЧАНДИГАР ORACLE 1
2002 BHAVESH ДЖЕЙН 65500 ПУНА FMW 2
3001 PRANOTI ШЕНДЕ 55500 ПУНА JAVA 3
3003 DEEPAM ДЖАУХАРИ 58500 МУМБАЙ JAVA 3
4001 РАДЖЕШ GOUD 60500 МУМБАЙ ТЕСТВАНЕ 4
4003 РУЧИКА AGARWAL 60 000 ДЕЛХИ ORACLE 1
5001 АРХИТ ШАРМА 55500 ДЕЛХИ ТЕСТВАНЕ 4

Резултатът по-горе показва, че сме избрали подробностите за служителите, включително дублиращи се стойности.

Пример 2: Напишете заявка за показване на заплатата на служителите от таблицата на служителите, чиято заплата на служителите е по-голяма от 55 000, като използвате ключова дума DISTINCT.

SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;

В горното изявление ние извличаме заплатата на служителя от таблицата на служителя, чиято заплата е по-голяма от 55 000, където елиминираме дублиращите се стойности. Отделната заплата ще показва уникална заплата от таблицата на служителя.

Резултатът за следния израз:

ЗАПЛАТА
65000
60000
55500
65500
58500
60500

В първия пример извадихме данните за служителите, чиято заплата е по-голяма от 55 000. Резултатът от заявката включва дублиращи се стойности. Но във втория пример изпълняваме същата заявка за показване на заплата на служител, чиято заплата е по-голяма от 55 000. Заявката показва резултата, елиминирайки дублиращите се стойности, защото използвахме ключовата дума DISTINCT, последвана от колоната за заплата.

Пример 3: Напишете заявка за показване на града и заплатата на служителите от таблицата на служителите, без да използвате отделна ключова дума.

SELECT SALARY, CITY FROM EMPLOYEES;

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

Резултатът за следния израз:

ЗАПЛАТА ГРАД
65500 ПУНА
60000 NOIDA
50500 ДЖАЙПУР
55500 ЧАНДИГАР
65500 ПУНА
50 000 МУМБАЙ
55500 ПУНА
50500 ДЖАЙПУР
58500 МУМБАЙ
60500 МУМБАЙ
54500 NOIDA
60000 ДЕЛХИ
55500 ДЕЛХИ

Пример 4: Напишете заявка за показване на града и заплатата на служителите от таблицата на служителите, като използвате различни ключови думи.

ИЗБЕРЕТЕ РАЗЛИЧНА ЗАПЛАТА, ГРАД ОТ СЛУЖИТЕЛИТЕ;

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

Резултатът за следния израз:

ЗАПЛАТА ГРАД
65500 ПУНА
60000 NOIDA
50500 ДЖАЙПУР
55500 ЧАНДИГАР
50 000 МУМБАЙ
55500 ПУНА
58500 МУМБАЙ
60500 МУМБАЙ
54500 NOIDA
60000 ДЕЛХИ
55500 ДЕЛХИ

Пример 5: Напишете заявка за показване на фамилия и отдел на служител от таблицата на служителя, където името на отдела започва с „O“, без да използвате ключовата дума DISTINCT;

SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';

В горното изявление извлечехме фамилни имена на служители, отдели от таблицата на служителите на тези служители, чиито имена на отдели започват с „O“, включително дублиращи се стойности.

Резултатът за следния израз:

LAST_NAME ОТДЕЛ
МИШРА ORACLE
ШАРМА ORACLE
ШАРМА ORACLE
AGARWAL ORACLE

Показват се само четири записа за тези служители, чийто отдел започва с „O“.

Пример 6: Напишете заявка за показване на фамилия и отдел на служител от таблицата на служителя, където името на отдела започва с „O“, като използвате ключовата дума DISTINCT;

SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';

Използвахме същата заявка в пример 5, просто добавихме ключовата дума DISTINCT точно преди името на колони, която ще показва уникални стойности от таблицата на служителя, чието име на отдел започва с „O“.

Резултатът за следния израз:

LAST_NAME ОТДЕЛ
МИШРА ORACLE
ШАРМА ORACLE
AGARWAL ORACLE

Същата заявка, която изпълнихме в горната заявка, добавихме ключовата дума DISTINCT точно преди колони. Резултатът, който получаваме, се различава от горния пример, защото показването на резултата има уникални стойности.

Пример 7: Напишете заявка за преброяване на заплатата на служителите от таблицата на служителите, без да използвате отделна ключова дума.

SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;

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

Резултатът за следния израз:

ОБЩА ЗАПЛАТА
13

Пример 8: Напишете заявка за преброяване на заплатата на служителите от таблицата на служителите, като използвате отделна ключова дума.

SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;

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

Резултатът за следния израз:

ОБЩА ЗАПЛАТА
8


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преглед на поточно репликация за TimescaleDB

  2. Още подобрения на шоуплана? Да моля!

  3. СЛИВАНЕ:Актуализиране на изходни и целеви таблици, разположени на отделни сървъри

  4. Общи инструкции за изграждане и внедряване на сървър за бази данни

  5. Обяснение на производителността на базата данни на Azure SQL и нивата на услуги