Počítejte odlišné kombinace na více sloupcích v SQL

Pocitejte Odlisne Kombinace Na Vice Sloupcich V Sql



Při práci v SQL databázích se můžete setkat s případy, kdy musíte najít odlišné hodnoty z dané tabulky a odstranit duplicitní hodnoty. Ve většině případů používáme především klauzuli rozlišovací k určení sloupce, jehož hodnoty jsou tím, čím chceme být jedinečné.

Co se ale stane, když chcete zajistit, aby hodnoty z více sloupců byly jedinečné a neexistovaly žádné duplikáty?







V tomto tutoriálu se naučíme, jak používat funkce SQL k výběru dvou nebo více sloupců a zajistit, aby jejich hodnoty byly odlišné.



Problém:

Předpokládejme, že máme tabulku s více sloupci a chceme spočítat počet různých kombinací hodnot v těchto sloupcích.



Podívejme se například na tabulku údajů o prodeji se sloupci customer_id, product_id a date. Chceme spočítat počet jedinečných kombinací customer_id a product_id.





Počítejte odlišné kombinace na více sloupcích v SQL

Můžeme spočítat počet různých kombinací ve více sloupcích pomocí klauzule COUNT DISTINCT a funkce CONCAT v SQL.

Funkce CONCAT nám umožňuje zřetězit dvě nebo více hodnot do jedné hodnoty, kterou pak můžeme použít k porovnání a sčítání.



Můžeme to lépe ilustrovat pomocí následující syntaxe:

VYBERTE POČET ( ZŘETELNÁ KONKAT ( sloupec1, sloupec2 ) )
FROM název_tabulky;


V tomto případě sloupce1 a sloupec2 odkazují na sloupce, které chceme při počítání zřetězit, a název_tabulky odkazuje na název cílové tabulky.

Vezměme si ukázkovou tabulku:

VYTVOŘIT TABULKU prodeje (
id INT PRIMÁRNÍ KLÍČ,
customer_id INT,
product_id INT,
datum DATUM
) ;

VLOŽTE DO HODNOT prodeje
( 1 , 100 , 1 , '2023-05-01' ) ,
( 2 , 101 , 1 , '2023-05-02' ) ,
( 3 , 100 , 2 , '2023-05-02' ) ,
( 4 , 102 , 3 , '2023-05-03' ) ,
( 5 , 101 , 2 , '2023-05-03' ) ,
( 6 , 103 , 2 , '2023-05-04' ) ,
( 7 , 100 , 3 , '2023-05-04' ) ,
( 8 , 102 , 1 , '2023-05-05' ) ,
( 9 , 101 , 3 , '2023-05-05' ) ,
( 10 , 103 , 1 , '2023-05-06' ) ;


Výsledná tabulka:


K určení počtu jedinečných kombinací sloupců customer_id a product_id z předchozí tabulky můžeme použít dotaz takto:

VYBERTE POČET ( ZŘETELNÁ KONKAT ( zákaznické identifikační číslo, '-' , product_id ) ) tak jako výsledek
Z prodeje;


V předchozím dotazu používáme odlišnou klauzuli a funkci concat ke zřetězení hodnot customer_id a product_id se spojovníkem. To by mělo vytvořit jednu hodnotu pro každou kombinaci, jak je znázorněno v následujícím:


Odtud můžeme pomocí funkce počítání počítat jedinečné kombinace z výsledné tabulky.

Závěr

Doufáme, že vám tento návod pomohl. V tomto příspěvku jste zjistili, jak kombinovat odlišnou klauzuli, funkci concat() a klauzuli počtu, abyste určili jedinečné hodnoty z více sloupců tabulky SQL.