logo

SQL COUNT DISTINCT

Înainte de a înțelege conceptul de Count Function cu cuvântul cheie DISTINCT, trebuie să știm despre cuvintele cheie Count și Distinct. Deci, să începem cu funcția Count.

Ce este Count în SQL?

COUNT este o funcție în Structured Query Language care arată numărul de înregistrări din tabel în rezultat. În SQL, este întotdeauna folosit în interogarea SELECT.

Sintaxa funcției Count este dată mai jos:

 SELECT COUNT(Name_of_Column) FROM Name_of_Table; 

În exemplul de numărare, trebuie să definim numele coloanei în paranteze imediat după cuvântul cheie COUNT.

Exemplu de funcție de numărare

În primul rând, trebuie să creăm un nou tabel pe care să fie executată funcția de numărare.

Următoarea interogare creează Detalii_Profesor masa cu ID_profesor ca cheie primară folosind instrucțiunea CREATE TABLE:

 CREATE TABLE Teacher_Details ( Teacher_ID INT NOT NULL, Teacher_Name varchar(100), Teacher_Qualification varchar(50), Teacher_Age INT, Teacher_Interview_Marks INT ); 

Următoarele interogări SQL inserează înregistrarea noilor profesori în tabelul de mai sus utilizând instrucțiunea 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); 

Să vedem înregistrarea tabelului de mai sus folosind următoarea instrucțiune SELECT:

 SELECT * FROM Teacher_Details; 

ID_profesor Numele profesorului Calificarea_Profesor Vârsta_Profesor Profesor_Interviu_Marci
101 Anuj B.tech douăzeci 88
102 Raman MCA 24 NUL
104 Shyam BBA 19 92
107 Vikash B.tech douăzeci NUL
111 Monu MBA douăzeci și unu NUL
114 Jones B.tech 18 93
121 Parul BCA douăzeci 97
123 Divya B.tech douăzeci și unu NUL
128 Hemant MBA 23 90
130 Nidhi BBA douăzeci 88
132 Priya MBA 22 NUL
138 Mohit MCA douăzeci și unu 92

Următoarea interogare numără valorile totale ale coloanei Teacher_Age din tabelul Teacher_Details:

 SELECT COUNT (Teacher_Age) AS Total_Teachers_Age_Column FROM Teacher_Details; 

Ieșire:

SQL COUNT DISTINCT

Ieșirea interogării SELECT de mai sus este de douăsprezece deoarece Vârsta_Profesor câmpul nu conține nicio valoare NULL.

Următoarea interogare numără valorile totale ale Teacher_Interview_Column din tabelul de mai sus:

 SELECT COUNT (Teacher_Interview_Marks) AS Total_Teachers_Interview_Marks FROM Teacher_Details; 

Această interogare va afișa rezultatul de mai jos pe ecran:

SQL COUNT DISTINCT

Rezultatul interogării SELECT de mai sus este 7 deoarece două cinci celule din coloana Teacher_Interview_Marks conțin NULL. Și aceste cinci valori NULL sunt excluse. De aceea, interogarea SELECT afișează 7 în loc de 12 în rezultat.

Ce este funcția Count(*)?

Aceasta este, de asemenea, similară cu funcția Count, dar singura diferență este că afișează și numărul de valori NULL din tabel.

Sintaxa funcției Count (*) este dată aici:

 SELECT COUNT(*) FROM Name_of_Table; 

Exemplu:

Să luăm cele de mai sus Teacher_Details:

ID_profesor Numele profesorului Calificarea_Profesor Vârsta_Profesor Profesor_Interviu_Marci
101 Anuj B.tech douăzeci 88
102 Raman MCA 24 NUL
104 Shyam BBA 19 92
107 Vikash B.tech douăzeci NUL
111 Monu MBA douăzeci și unu NUL
114 Jones B.tech 18 93
121 Parul BCA douăzeci 97
123 Divya B.tech douăzeci și unu NUL
128 Hemant MBA 23 90
130 Nidhi BBA douăzeci 88
132 Priya MBA 22 NUL
138 Mohit MCA douăzeci și unu 92

Următoarea interogare numără valorile totale ale Total_Marke_Interviu coloana din tabelul de mai sus:

 SELECT COUNT (*) FROM Teacher_Details; 

Interogarea de mai sus SELECT cu COUNT(*) va oferi rezultatul de mai jos pe ecran:

SQL COUNT DISTINCT

Ce este DISTINCT în SQL?

Cuvântul cheie DISTINCT arată rândurile unice ale coloanei din tabel din rezultat.

Sintaxa cuvântului cheie DISTINCT este dată aici:

 SELECT DISTINCT Name_of_Column FROM Table_Name WHERE [condition]; 

În interogarea DISTINCT, putem defini și condiția din clauza WHERE pentru preluarea valorilor specifice.

Exemplu de DISTINCT

Mai întâi, creați un tabel nou pe care să fie rulat cuvântul cheie Distinct.

Următoarea interogare creează Bicicletă_Detalii tabel folosind instrucțiunea CREATE TABLE:

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

Următoarele interogări SQL inserează înregistrarea bicicletelor noi în tabel utilizând instrucțiunea 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); 

Înregistrările din tabelul de mai sus sunt afișate utilizând următoarea interogare SELECT:

 SELECT * FROM Bike_Details; 

Bike_Name Bike_Model Bike_Color Bike_Cost
KTM DUKE 2019 Negru 185000
Royal Enfield 2020 Negru 165000
presa 2018 roșu 90000
Apache 2020 alb 85.000
Trăi 2018 Negru 80.000
KTM RC 2020 roșu 195.000

Masa: Bicicletă_Detalii

Următorul SQL interogă valorile distincte ale coloanei Culoare față de cele de mai sus Bicicletă_Detalii masa:

 SELECT DISTINCT Bike_Color FROM Bikes ; 

Ieșire:

SQL COUNT DISTINCT

După cum putem vedea, Black, Red și White sunt trei valori distincte în coloana Bike_Color.

Funcția de numărare cu cuvânt cheie DISTINCT

Cuvântul cheie DISTINCT cu funcția COUNT în interogarea SELECT afișează numărul de date unice ale câmpului din tabel.

Sintaxa funcției de numărare cu cuvântul cheie DISTINCT este prezentată mai jos:

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

Exemple de funcție de numărare cu cuvânt cheie DISTINCT

Următoarele două exemple SQL vor explica execuția funcției Count cu cuvântul cheie Distinct:

Exemplul 1:

Următoarea interogare creează tabelul College_Students cu patru câmpuri:

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

Următoarea interogare INSERT inserează înregistrarea studenților în tabelul 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); 

Următoarea interogare arată detaliile tabelului College_Students:

 SELECT * FROM College_Students; 

Carnet de student Numele studentului Student_Vârsta Student_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

Tabel: Facultate_Studenți

Următoarea instrucțiune SQL numără valorile unice ale coloanei Student_Age din tabelul College_Students:

Freddie Mercury născut
 SELECT COUNT (DISTINCT (Student_Age) AS Unique_Age FROM College_Students ; 

Această interogare va oferi tabelul de mai jos în rezultat:

SQL COUNT DISTINCT

Rezultatul arată cele patru valori deoarece coloana Teacher_age conține 4 valori unice.

Exemplul 2:

Următoarea interogare creează tabelul IT_Employee cu patru câmpuri:

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

Următoarea interogare INSERT inserează înregistrarea angajaților IT în tabelul 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); 

Următoarea interogare arată detaliile tabelului IT_Employee:

 SELECT * FROM IT_Employee; 

Card de identitate al angajatului Numele angajatului Vârsta_angajată Salariu_Angajat
101 Akhil 28 25000
102 Abhay 27 26000
103 Sorya 26 29000
104 Abhishek 27 26000
105 Hrithik 26 29000
106 Yash 29 25000

Tabel: IT_Angajat

Următoarea instrucțiune SQL numără numai valorile unice ale coloanei Emp_Age din tabelul IT_Employee de mai sus:

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

Această interogare va da rezultatul de mai jos:

SQL COUNT DISTINCT