logo

SQL COUNT DISTINCT

Predtým, ako pochopíme koncept funkcie Count s kľúčovým slovom DISTINCT, musíme vedieť o kľúčových slovách Count a Distinct. Začnime teda funkciou Count.

Čo je Count v SQL?

COUNT je funkcia v jazyku Structured Query Language, ktorá zobrazuje počet záznamov z tabuľky vo výsledku. V SQL sa vždy používa v dotaze SELECT.

Syntax funkcie Count je uvedená nižšie:

 SELECT COUNT(Name_of_Column) FROM Name_of_Table; 

V príklade počtu musíme definovať názov stĺpca v zátvorkách hneď za kľúčovým slovom COUNT.

Príklad funkcie počítania

Najprv musíme vytvoriť novú tabuľku, na ktorej sa má vykonať funkcia počítania.

Nasledujúci dotaz vytvorí Teacher_Details stôl s Učiteľ_ID ako primárny kľúč pomocou príkazu CREATE TABLE:

do a while v jave
 CREATE TABLE Teacher_Details ( Teacher_ID INT NOT NULL, Teacher_Name varchar(100), Teacher_Qualification varchar(50), Teacher_Age INT, Teacher_Interview_Marks INT ); 

Nasledujúce SQL dotazy vložia záznam nových učiteľov do vyššie uvedenej tabuľky pomocou príkazu INSERT INTO:

 INSERT INTO Teacher_Details VALUES (101, Anuj, B.tech, 20, 88); INSERT INTO Teacher_Details VALUES (102, Raman, MCA, 24, NULL); INSERT INTO Teacher_Details VALUES (104, Shyam, BBA, 19, 92); INSERT INTO Teacher_Details VALUES (107, Vikash, B.tech, 20, NULL); INSERT INTO Teacher_Details VALUES (111, Monu, MBA, 21, NULL); INSERT INTO Teacher_Details VALUES (114, Jones, B.tech, 18, 93); INSERT INTO Teacher_Details VALUES (121, Parul, BCA, 20, 97); INSERT INTO Teacher_Details VALUES (123, Divya, B.tech, 21, NULL); INSERT INTO Teacher_Details VALUES (128, Hemant, MBA, 23, 90); INSERT INTO Teacher_Details VALUES (130, Nidhi, BBA, 20, 88); INSERT INTO Teacher_Details VALUES (132, Priya, MBA, 22, NULL); INSERT INTO Teacher_Details VALUES (138, Mohit, MCA, 21, 92); 

Pozrime sa na záznam vyššie uvedenej tabuľky pomocou nasledujúceho príkazu SELECT:

 SELECT * FROM Teacher_Details; 

Učiteľ_ID Meno učiteľa Kvalifikácia učiteľa Učiteľ_Vek Učiteľ_rozhovor_Marks
101 Anuj B.tech dvadsať 88
102 Raman MCA 24 NULOVÝ
104 Shyam BBA 19 92
107 Vikash B.tech dvadsať NULOVÝ
111 Monu MBA dvadsaťjeden NULOVÝ
114 Jones B.tech 18 93
121 Vlasy BCA dvadsať 97
123 Divya B.tech dvadsaťjeden NULOVÝ
128 Hemant MBA 23 90
130 Nidhi BBA dvadsať 88
132 Priya MBA 22 NULOVÝ
138 Mohit MCA dvadsaťjeden 92

Nasledujúci dotaz počíta celkové hodnoty stĺpca Teacher_Age z tabuľky Teacher_Details:

 SELECT COUNT (Teacher_Age) AS Total_Teachers_Age_Column FROM Teacher_Details; 

Výkon:

SQL COUNT DISTINCT

Výstup vyššie uvedeného dotazu SELECT je dvanásť, pretože Učiteľ_Vek pole neobsahuje žiadnu hodnotu NULL.

Nasledujúci dotaz počíta celkové hodnoty stĺpca Teacher_Interview_Column z tabuľky vyššie:

 SELECT COUNT (Teacher_Interview_Marks) AS Total_Teachers_Interview_Marks FROM Teacher_Details; 

Tento dotaz zobrazí na obrazovke nasledujúci výstup:

SQL COUNT DISTINCT

Výstup vyššie uvedeného dotazu SELECT je 7, pretože dve päť buniek stĺpca Teacher_Interview_Marks obsahuje NULL. A týchto päť hodnôt NULL je vylúčených. Preto dotaz SELECT zobrazí vo výsledku 7 namiesto 12.

Čo je funkcia Count(*)?

Toto je tiež podobné funkcii Count, ale jediný rozdiel je v tom, že zobrazuje aj počet hodnôt NULL z tabuľky.

Syntax funkcie Count (*) je uvedená tu:

 SELECT COUNT(*) FROM Name_of_Table; 

Príklad:

Zoberme si vyššie uvedené podrobnosti o učiteľovi:

Učiteľ_ID Meno učiteľa Kvalifikácia učiteľa Učiteľ_Vek Učiteľ_rozhovor_Marks
101 Anuj B.tech dvadsať 88
102 Raman MCA 24 NULOVÝ
104 Shyam BBA 19 92
107 Vikash B.tech dvadsať NULOVÝ
111 Monu MBA dvadsaťjeden NULOVÝ
114 Jones B.tech 18 93
121 Vlasy BCA dvadsať 97
123 Divya B.tech dvadsaťjeden NULOVÝ
128 Hemant MBA 23 90
130 Nidhi BBA dvadsať 88
132 Priya MBA 22 NULOVÝ
138 Mohit MCA dvadsaťjeden 92

Nasledujúci dotaz počíta celkové hodnoty Total_Interview_Marks stĺpec z vyššie uvedenej tabuľky:

 SELECT COUNT (*) FROM Teacher_Details; 

Vyššie uvedený dotaz SELECT s COUNT(*) poskytne na obrazovke nasledujúci výsledok:

SQL COUNT DISTINCT

Čo je DISTINCT v SQL?

Kľúčové slovo DISTINCT zobrazuje vo výsledku jedinečné riadky stĺpca z tabuľky.

Syntax kľúčového slova DISTINCT je uvedená tu:

 SELECT DISTINCT Name_of_Column FROM Table_Name WHERE [condition]; 

V dotaze DISTINCT môžeme definovať aj podmienku v klauzule WHERE pre získanie konkrétnych hodnôt.

Príklad DISTINCT

Najprv vytvorte novú tabuľku, na ktorej sa má spustiť kľúčové slovo Distinct.

Nasledujúci dotaz vytvorí Bike_Details tabuľku pomocou príkazu CREATE TABLE:

 CREATE TABLE Bike_Details ( Bike_Name varchar(100), Bike_Model INT, Bike_Color varchar(50), Bike_Cost INT ); 

Nasledujúce SQL dotazy vložia záznam o nových bicykloch do tabuľky pomocou príkazu INSERT INTO:

 INSERT INTO Bike_Details VALUES (KTM DUKE, 2019, Black, 185000); INSERT INTO Bike_Details VALUES (royal Infield, 2020, Black, 165000); INSERT INTO Bike_Details VALUES (Pulsar, 2018, Red, 90000); INSERT INTO Bike_Details VALUES (Apache, 2020, White, 85000); INSERT INTO Bike_Details VALUES (Livo, 2018, Black, 80000); INSERT INTO Bike_Details VALUES (KTM RC, 2020, Red, 195000); 

Záznamy z vyššie uvedenej tabuľky sú zobrazené pomocou nasledujúceho SELECT dotazu:

 SELECT * FROM Bike_Details; 

Bike_Name Bike_Model Farba_bicykla Bike_Cost
KTM DUKE 2019 čierna 185 000
Kráľovský Enfield 2020 čierna 165 000
Stlačte tlačidlo 2018 Červená 90 000
Apache 2020 biely 85 000
Naživo 2018 čierna 80 000
KTM RC 2020 Červená 195 000

Tabuľka: Bike_Details

Nasledujúci SQL dopytuje odlišné hodnoty stĺpca Farba od vyššie uvedeného Bike_Details tabuľka:

 SELECT DISTINCT Bike_Color FROM Bikes ; 

Výkon:

SQL COUNT DISTINCT

Ako vidíme, čierna, červená a biela sú tri odlišné hodnoty v stĺpci Bike_Color.

Funkcia počítania s kľúčovým slovom DISTINCT

Kľúčové slovo DISTINCT s funkciou COUNT v dotaze SELECT zobrazuje počet jedinečných údajov poľa z tabuľky.

Syntax funkcie Count s kľúčovým slovom DISTINCT je uvedená nižšie:

 SELECT COUNT(DISTINCT (Column_Name) FROM table_name WHERE [condition]; 

Príklady funkcie Count s kľúčovým slovom DISTINCT

Nasledujúce dva príklady SQL vysvetlia vykonávanie funkcie Count s kľúčovým slovom Distinct:

Príklad 1:

Nasledujúci dotaz vytvorí tabuľku College_Students so štyrmi poliami:

 CREATE TABLE College_Students ( Student_Id INT NOT NULL, Student_Name Varchar (40), Student_Age INT, Student_Marks INT ); 

Nasledujúci dotaz INSERT vloží záznam študentov do tabuľky College_Students:

 INSERT INTO College_Students (Student_Id, Student_Name, Student_Age, Student_Marks) VALUES (101, Akhil, 28, 95), (102, Abhay, 27, 86), (103, Sorya, 26, 79), (104, Abhishek, 27, 66), (105, Ritik, 26, 79), (106, Yash, 29, 88); 

Nasledujúci dotaz zobrazuje podrobnosti tabuľky College_Students:

 SELECT * FROM College_Students; 

Študentská karta Meno študenta Student_Vek Študent_Marks
101 Akhil 28 95
102 Abhay 27 86
103 Sorya 26 79
104 Abhishek 27 66
105 Hrithik 26 79
106 Yash 29 88

Tabuľka: College_Students

Nasledujúci príkaz SQL počíta jedinečné hodnoty stĺpca Student_Age z tabuľky College_Students:

 SELECT COUNT (DISTINCT (Student_Age) AS Unique_Age FROM College_Students ; 

Tento dotaz poskytne na výstupe nasledujúcu tabuľku:

SQL COUNT DISTINCT

Výstup zobrazuje štyri hodnoty, pretože stĺpec Teacher_age obsahuje 4 jedinečné hodnoty.

Príklad 2:

Nasledujúci dotaz vytvorí tabuľku IT_Employee so štyrmi poliami:

 CREATE TABLE IT_Employee ( Employee_Id INT NOT NULL, Employee_Name Varchar (40), Emp_Age INT, Employee_Salary INT ); 

Nasledujúci dotaz INSERT vloží záznam zamestnancov IT do tabuľky IT_Employee:

 INSERT INTO IT_Employee (Employee_Id, Employee_Name, Employee_Age, Employee_Salary) VALUES (101, Akhil, 28, 25000), (102, Abhay, 27, 26000), (103, Sorya, 26, 29000), (104, Abhishek, 27, 26000), (105, Ritik, 26, 29000), (106, Yash, 29, 25000); 

Nasledujúci dotaz zobrazuje podrobnosti tabuľky IT_Employee:

 SELECT * FROM IT_Employee; 

Identifikačné číslo zamestnanca Meno zamestnanca Zamestnanec_Vek Zamestnanec_Plat
101 Akhil 28 25 000
102 Abhay 27 26 000
103 Sorya 26 29 000
104 Abhishek 27 26 000
105 Hrithik 26 29 000
106 Yash 29 25 000

Tabuľka: IT_Employee

Nasledujúci príkaz SQL počíta iba jedinečné hodnoty stĺpca Emp_Age z vyššie uvedenej tabuľky IT_Employee:

 SELECT COUNT (DISTINCT (Employee_Age)) AS Unique_Age FROM IT_Employee ; 

Tento dotaz poskytne nasledujúci výstup:

SQL COUNT DISTINCT