SQL データベースで作業している場合、特定のテーブルから個別の値を見つけて重複する値を削除する必要がある場合があります。ほとんどの場合、主に、値を一意にしたい列を指定するために、distinct 句を使用します。
しかし、複数の列の値が一意であり、重複がないことを確認したい場合はどうなるでしょうか?
このチュートリアルでは、SQL 機能を使用して 2 つ以上の列を選択し、それらの値が異なることを確認する方法を学びます。
問題:
複数の列を含むテーブルがあり、これらの列にわたる値の異なる組み合わせの数を数えたいとします。
たとえば、customer_id、product_id、date 列を含む販売データのテーブルを考えてみましょう。 customer_id と product_id の一意の組み合わせの数を数えたいと考えています。
SQL の複数の列の異なる組み合わせをカウントする
SQL の COUNT DISTINCT 句と CONCAT 関数を使用すると、複数の列にわたる異なる組み合わせの数をカウントできます。
CONCAT 関数を使用すると、2 つ以上の値を 1 つの値に連結して、比較やカウントに使用できます。
次の構文を使用すると、これをよりわかりやすく説明できます。
カウントの選択 ( 個別の連結 ( 列1、列2 ) )FROM テーブル名;
この場合、column1 と column2 はカウント中に連結する列を指し、table_name はターゲット テーブルの名前を指します。
サンプルテーブルを見てみましょう。
CREATE TABLEの販売 (ID INT 主キー、
customer_id INT、
製品ID INT、
日にち 日にち
) ;
売上値に挿入
( 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」 ) ;
結果のテーブル:
前のテーブルの customer_id 列と product_id 列の一意の組み合わせの数を確認するには、次のようにクエリを使用します。
売上から。
前のクエリでは、distinct 句と concat 関数を使用して、customer_id と product_id の値をハイフンで連結しています。これにより、以下に示すように、組み合わせごとに 1 つの値が作成されます。
ここから、count 関数を使用して、結果のテーブルから一意の組み合わせを数えることができます。
結論
このチュートリアルがお役に立てば幸いです。この投稿では、distinct 句、concat() 関数、count 句を組み合わせて、複数の SQL テーブル列から一意の値を決定する方法を学びました。