SQLShack (Magyar)

Ez a cikk az SQL Count Distinct operátort tárja fel a duplikált sorok az eredményhalmazban.

A fejlesztőnek adatokat kell kapnia egy SQL feltételekkel rendelkező táblából. Néha meg akarjuk kapni az összes sort egy táblázatban, de meg kell szüntetnünk a rendelkezésre álló NULL értékeket. Tegyük fel, hogy különálló ügyfél-nyilvántartásokat szeretnénk szerezni, amelyek tavaly megrendeltek.

Menjünk előre, és készítsünk egy gyors áttekintést az SQL Count Funkcióról.

SQL Count Funkció

Az SQL Count aggregate függvényt használjuk a sorok számának lekérdezéséhez a kimenet. Tegyük fel, hogy van egy terméktáblánk, amely nyilvántartást tartalmaz a vállalat által eladott összes termékről. Szeretnénk megtudni az elmúlt negyedév során eladott termékek számát. Az SQL Count Function segítségével visszaadhatjuk a sorok számát a megadott feltételben.

Az SQL COUNT függvény szintaxisa:
COUNT (kifejezés);

Alapértelmezés szerint Az SQL Server Count függvény az összes kulcsszót használja. Ez azt jelenti, hogy az SQL Server megszámolja az összes rekordot egy táblázatban. Ez magában foglalja azokat a sorokat is, amelyek duplikált értékekkel rendelkeznek.

Hozzunk létre egy mintatáblát, és tegyünk bele néhány rekordot.

Ebben a táblázatban vannak duplikált és NULL értékek is .

A következő képernyőképen megjegyezhetjük, hogy:

  • Count (* ) tartalmaz duplikált értékeket, valamint NULL értékeket
  • A Count (Col1) tartalmaz duplikált értékeket, de nem tartalmazza a NULL értékeket

Tegyük fel, hogy meg akarjuk ismerni a táblázatban elérhető különálló értékeket. Ehhez használhatjuk az SQL COUNT DISTINCT funkciót.

1
2

Válassza ki a számot (DISTINCT COL1)
a ## TestTable

A következő kimenetben csak 2 sort kapunk. Az SQL COUNT Distinct nem szünteti meg az ismétlődő és a NULL értékeket az eredményhalmazból.

Nézzünk meg egy másik példát. Ebben a példában van egy helytáblázatunk, amely két Város és Állam oszlopból áll.

Most hajtsa végre a következő lekérdezést, hogy megtudja a táblázatból a különálló város számát.

1
2

SELECT COUNT (DISTINCT (város))
FROM Location;

Visszaadja az egyedi városok számát 2 (Gurgaon és Jaipur) az eredménykészletünkből.

Ha megnézzük az adatokat, hasonló városnév van egy másikban állam is. A város és az állam kombinációja egyedi, és nem akarjuk, hogy ez az egyedi kombináció kikerüljön a kimenetből.

Az SQL DISTINCT függvényt oszlopok kombinációján is használhatjuk. Ellenőrzi az értékek kombinációját, és eltávolítja, ha a kombináció nem egyedi.

1
2

SELECT DISTINCT Város, állam
FROM hely;

Nem távolítja el az ismétlődő városneveket a kimenetről az értékek egyedi kombinációja miatt.

Helyezzünk be még egy sort a helytáblázatba.

1

Helyezés a helyértékekbe (“Gurgaon “,” Haryana “)

5 rekordunk van a helytáblázat. Az adatokban láthatja, hogy a város és az állam egyetlen kombinációja van, amely nem egyedi.

Futtassa újra a SELECT DISTINCT függvény, és ezúttal csak 4 sort ad vissza.

Nem használhatjuk közvetlenül az SQL COUNT DISTINCT függvényt a több oszloppal . A következő hibaüzenetet kapja.

Ideiglenes táblázatot használhatunk rekordok lekérésére az SQL DISTINCT függvényből, majd count (*) a sorszámok ellenőrzéséhez.

1
2
3
4

KIVÁLASZTANI A DISTINCT várost, államot
#Temp
FROM helyből;
Válassza ki a számot (*) a #Temp

A 4. sorszámot kapjuk a kimenetben.

Ha oszlopok kombinációját használjuk a megkülönböztetéshez értékek és bármely oszlop NULL értékeket tartalmaz, ez az SQL Server egyedi kombinációjává is válik.

Ennek ellenőrzéséhez helyezzünk be további rekordokat a helytáblába. Ebben a lekérdezésben nem adtunk meg állapotot.

1
2

Beszúrás a helyértékekbe (“Gurgaon”, “”)
Hely (város) értékekbe (“Gurgaon”)

Nézzük meg a helytábla adatait.

Futtassa újra a lekérdezést a megkülönböztetés érdekében sorok a helytáblából.

1
2

KIVÁLASZTÁS külön város, állam
FROM helyből;

A kimenetben láthatjuk, hogy nem szünteti meg a City és State kombinációja az üres vagy NULL értékekkel.

Hasonlóképpen láthatja a 6. sorszámot az SQL COUNT-tal DISTINCT függvény.

Különbség a SELECT COUNT, COUNT (*) és az SQL COUNT különbség között

COUNT

Count (*)

Számlálás (megkülönböztető)

Visszaadja a sorok teljes számát, miután kielégítette a hol záradékban megadott feltételeket.

Visszaadja a sorok teljes számát, miután kielégítette a hol záradékban megadott feltételeket.

A hol záradékban megadott feltételek teljesítése után a sorok külön számát adja vissza. .

Megadja a sorok számát. Nem szünteti meg az ismétlődő értékeket.

Minden sort figyelembe vesz, függetlenül az esetleges ismétlődő, NULL értékektől.

külön sorszám a NULL és a duplikált értékek kiküszöbölése után.

Megszünteti a kimenet NULL értékeit.

Nem szünteti meg a kimenet NULL értékeit.

Megszünteti a kimenet NULL értékeit.

Az SQL végrehajtási terve különálló függvény

Nézzük meg az SQL COUNT DISTINCT függvény tényleges végrehajtási tervét. Engedélyeznie kell a tényleges végrehajtási tervet az SSMS menüsorából, az alábbiak szerint.

Végezze el a lekérdezést, hogy aktuális képet kapjon. végrehajtási terv. Ebben a végrehajtási tervben a legfontosabb erőforrás-fogyasztó operátorok láthatók:

  • Rendezés (Különböző rendezés) – Költség 78%
  • Táblázat beolvasása – Költség 22%

Vigye az egeret a rendezés operátor fölé, és megnyílik egy eszköztipp az operátor részleteivel.

A tulajdonságok ablakában további részleteket kapunk a rendezés operátorról, beleértve a memória elosztását, a statisztikákat és a sorok számát.

Egy millió rekordot tartalmazó táblában az SQL Count Distinct teljesítményproblémákat okozhat, mert egy külön számláló operátor költséges operátor a tényleges végrehajtási terv.

Az SQL Server 2019 javítja az SQL COUNT DISTINCT operátor teljesítményét egy új Approx_count_distinct függvény használatával. Az SQL Server 2019 új funkciója hozzávetőlegesen elkülönített sorszámot biztosít. Kicsit eltérhet az SQL Count különálló és az Approx_Count_distinct függvény kimenete.

Az SQL COUNT DISTINCT helyettesíthető az Approx_Count_distinct kulcsszóval a függvény használatához az SQL Server 2019-ből.

1
2

SELECT APPROX_COUNT_DISTINCT (város)
FROM Location;

A funkcióról többet megtudhat az Új SQL Server 2019 függvényben: Approx_Count_Distinct.

Következtetés

Ebben a cikkben különféle példákkal vizsgáltuk az SQL COUNT függvényt. Ezenkívül kitértünk az SQL Server 2019-től elérhető, új, kb. Ha bármilyen észrevétele vagy kérdése van, hagyja nyugodtan az alábbi megjegyzésekben.

  • Szerző
  • Legfrissebb bejegyzések
Mint MCSA tanúsított és Microsoft tanúsított oktató az indiai Gurgaonban, 13 éves tapasztalattal, Rajendra számos nagyvállalatnál dolgozik, elsősorban a teljesítmény optimalizálására, monitorozására, magas rendelkezésre állására és katasztrófa utáni helyreállítási stratégiák és végrehajtás. Több száz hiteles cikk szerzője az SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git és kapcsolódó technológiákról, amelyeket eddig több mint 10 millió olvasó nézett meg.
Az egyik legnagyobb ingyenes online cikkgyűjtemény létrehozója egyetlen témában, az SQL Server Always On Available Groups 50 részből álló sorozatával. Az SQL Server közösséghez való hozzájárulása alapján különféle díjakkal ismerték el, köztük a rangos “Az év legjobb szerzője” címet 2020-ban és 2021-ben folyamatosan az SQLShacknél.
Raj mindig érdekli az új kihívásokat, így ha tanácsadásra van szüksége segítséget nyújt az írásaiban szereplő bármely témában, elérhető a [email protected] címen: Rajendra Gupta összes üzenetének megtekintése

Rajendra Gupta legújabb üzenetei (lásd az összeset)
  • Munkamenet időkorlátjai az SQL Server rendszerben Csoportok – 2021. február 8.
  • Apróbb és nagyobb verzió frissítések végrehajtása az AWS RDS SQL Server számára – 2021. január 29.
  • AWS RDS PostgreSQL példányok telepítése – 2021. január 27.

Write a Comment

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük