MySQL COUNT funktsioon: täielik juhend koos näidete ja parimate praktikatega

1. MySQL COUNT funktsiooni ülevaade

MySQL-is on COUNT funktsioon väga kasulik tööriist, millega saab tuua välja teatud veeru või tingimusele vastavate andmete ridade arvu. Selle funktsiooni abil on lihtne loendada kindlaid kirjeid andmebaasis. Näiteks saab kokku lugeda kõik read või arvutada tingimusele vastavate kirjete arvu.

COUNT() funktsiooni põhistruktuur

Põhiline COUNT funktsiooni kasutus on järgmine:

SELECT COUNT(*) FROM table_name;

See päring loendab kõik kirjed määratud tabelis. Kui soovid lugeda konkreetse veeru väärtusi, kasuta järgmist süntaksit:

SELECT COUNT(column_name) FROM table_name;

Selles juhul NULL väärtused jäetakse tähelepanuta ja neid ei loendata.

Näide NULL väärtuste ignoreerimisest

Näiteks kui age veerus on NULL väärtusi, saab neid välistada järgmise päringuga:

SELECT COUNT(age) FROM users WHERE age IS NOT NULL;

See päring loendab ainult need age väärtused, mis ei ole NULL.

2. COUNT funktsioon koos DISTINCT-iga

Andmebaasis on sageli korduvalt salvestatud samu väärtusi. Sellisel juhul saab DISTINCT-i kasutada koos COUNT funktsiooniga, et tuua välja ainult unikaalsete väärtuste arv. DISTINCT eemaldab tulemuste hulgast duplikaadid enne loendamist.

Näide COUNT ja DISTINCT kasutamisest

Järgmine päring loendab name veerus unikaalsete nimede arvu:

SELECT COUNT(DISTINCT name) FROM users;

Näiteks, kui users tabelis esineb mitu korda “taro”, loetakse seda ainult ühe korra.

3. Loendamine koos WHERE klausliga

COUNT funktsiooni saab kasutada koos WHERE klausliga, et lugeda ainult teatud tingimustele vastavad read. See on kasulik, kui soovid tuua välja ainult kindlat tüüpi andmeid.

Näide tingimuslikust loendamisest

Järgmine päring loendab kasutajad, kelle vanus on vähemalt 25:

SELECT COUNT(*) FROM users WHERE age >= 25;

See päring tagastab users tabelist ridade arvu, kus age on 25 või rohkem.

COUNT funktsiooni laiendatud näide

Samuti saab kasutada mitut tingimust. Näiteks loendamaks meessoost kasutajad, kelle age on vähemalt 25:

SELECT COUNT(*) FROM users WHERE age >= 25 AND gender = 'Male';

See päring loendab ainult read, mis vastavad mõlemale tingimusele.

4. Andmete grupeerimine ja loendamine GROUP BY abil

GROUP BY klausliga saab andmeid grupeerida ja loendada iga grupi sees. See on kasulik näiteks, kui soovid lugeda töötajate arvu osakonna kaupa.

Näide GROUP BY ja COUNT kasutamisest

Järgmine päring loendab töötajad osakondade kaupa:

SELECT department, COUNT(*) FROM employees GROUP BY department;

Tulemuseks tagastatakse iga osakonna töötajate arv.

5. Tingimuslik loendamine IF lause abil

COUNT funktsiooni saab kombineerida IF lausega, et rakendada keerukamaid tingimusi. Näiteks saab lugeda ainult need töötajad, kelle palk ületab 50,000.

Näide IF lausega

Järgmine päring loendab töötajad, kelle palk on üle 50,000:

SELECT COUNT(IF(salary > 50000, 1, NULL)) FROM employees;

See päring loendab ainult read, kus salary > 50000.

6. COUNT funktsiooni praktilised kasutused

COUNT funktsioon on igapäevases andmebaasi halduses väga kasulik. Näiteks saab seda kasutada kasutajate registreerimiste arvu või müügitehingute lugemiseks.

Näide 1: kasutajate registreerimiste arv

Veebisaidi haldaja saab teada registreeritud kasutajate arvu järgmise päringuga:

SELECT COUNT(*) FROM users;

See päring tagastab kõigi kasutajate arvu tabelis users.

Näide 2: müügiandmete loendamine

Müügiandmete haldamiseks saab lugeda, mitu korda konkreetset toodet müüdi:

SELECT COUNT(*) FROM sales WHERE product_id = 123;

See päring loendab kõik kirjed, kus product_id on 123.

7. COUNT funktsiooni probleemide lahendamine

COUNT funktsiooni kasutamisel võib tekkida probleeme eriti NULL või duplikaatandmete puhul. Nende vältimiseks on kasulik teada mõned lahendused.

Probleemid ja lahendused seoses NULL andmetega

Kui kasutad COUNT(column_name), siis NULL väärtusi ei loendata. Kui soovid lugeda kõiki ridu, kasuta COUNT(*). Kui soovid loendada ainult mitte-NULL väärtusi, lisa IS NOT NULL tingimus:

SELECT COUNT(column_name) FROM table_name WHERE column_name IS NOT NULL;