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:
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.