データの冗長性は多くの理由で発生します。データベースシステムでの作業中に対処する必要のある複雑な作業のいくつかは、重複する値を発見しようとしています。この目的のために、COUNT()集計メソッドを使用します。 COUNT()メソッドは、特定のテーブルにある行の合計を返します。 COUNT()関数を使用すると、定義された条件に一致するすべての行または行のみを合計できます。このガイドでは、COUNT()を使用して1つ以上のMySQL列の重複値を識別する方法を学習します。 COUNT()メソッドには、次の3つのタイプがあります。
- カウント(*)
- COUNT(式)
- COUNT(DISTINCT式)
システムにMySQLがインストールされていることを確認してください。 MySQLコマンドラインクライアントシェルを開き、パスワードを入力して続行します。 COUNT()メソッドを使用して一致する値をカウントするためのいくつかの例を見ていきます。
スキーマ「data」に「social」テーブルがあります。次のクエリでレコードを確認しましょう。
>> 選択する * から データ 。ソーシャル;
MySQL COUNT(*)
COUNT(*)メソッドは、テーブルにある行の数をカウントしたり、指定された条件に従って行の数をカウントしたりするために使用されます。テーブルの行の総数を確認するには、「ソーシャル」で以下のクエリを試してください。結果によると、テーブルには合計15行があります。
>> 選択する カウント ((*)。 から データ 。ソーシャル;
いくつかの条件を定義しながら、COUNT(*)メソッドを垣間見ることができます。ユーザー名が「Mustafa」と同じ行数を取得する必要があります。この特定の名前のレコードは4つしかないことがわかります。
>> 選択する カウント ((*)。 から データ 。ソーシャル どこ ユーザー =「ムスタファ」;
ユーザーのウェブサイトが「Instagram」である行の合計を取得するには、以下のクエリを試してください。テーブル「social」には、ウェブサイト「Instagram」のレコードが4つしかありません。
>> 選択する カウント ((*)。 から データ 。ソーシャル どこ Webサイト='インスタグラム';
「年齢」が18を超える行の総数を取得するには、次のようにします。
>> 選択する カウント ((*)。 から データ 。ソーシャル どこ 年>> 18;
「ユーザー」列と「ウェブサイト」列のデータをテーブルから取得してみましょう。ユーザー名はアルファベットの「M」で始まります。シェルで以下の手順を試してください。
>> 選択する ユーザー 、Webサイト から データ 。ソーシャル どこ ユーザー お気に入り 'NS%';
MySQLCOUNT(式)
MySQLでは、COUNT(expression)メソッドは、列「expression」のNull以外の値をカウントする場合にのみ使用されます。 「式」は任意の列の名前になります。簡単な例を見てみましょう。 「Website」列のnull以外の値のみをカウントしてきました。これは、「25」に等しい値を持つ「Age」列に関連しています。見る!ウェブサイトを使用している「25」歳のユーザーのnull以外のレコードは4つだけです。
>> 選択する カウント ((Webサイト)。 から データ 。ソーシャル どこ 年= 25;
MySQL COUNT(DISTNCT式)
MySQLでは、COUNT(DISTINCT式)メソッドを使用して、列「式」の非Null値と個別の値を合計します。 「年齢」列のnull以外の値の数を数えるために、以下のクエリを使用しています。テーブル「social」から、列「Age」の6つのnull以外の個別のレコードが見つかります。これは、年齢の異なる合計6人の人々がいることを意味します。
>> 選択する カウント (( 明確 年)。 から データ 。ソーシャル;
MySQL COUNT(IF(式))
非常に強調するには、COUNT()をフロー制御関数とマージする必要があります。手始めに、COUNT()メソッドで使用されている式の一部については、IF()関数を使用できます。これを行うと、データベース内の情報をすばやく分析できるので非常に便利です。年齢条件の異なる行数を数え、3つの異なる列に分割します。これはカテゴリと言えます。まず、COUNT(IF)は、年齢が20未満の行をカウントし、このカウントを「Teenage」という名前の新しい列に保存します。 2番目のCOUNT(IF)は、「若い」列に保存しながら、20〜30歳の行をカウントしています。 3番目に、最後は30を超える年齢を持ち、「成熟」列に保存された行をカウントします。私たちの記録には、10代の若者が5人、若い人が9人、成熟した人が1人しかいません。
>> 選択する カウント (( もしも ((年< 20、1、 ヌル )。)。「10代」、 カウント (( もしも ((年 の間に 20 と 30、1、 ヌル )。)。'若い'、 カウント (( もしも ((年>> 30、1、 ヌル )。)。「成熟した」 から データ 。ソーシャル;
GROUPBY句を使用したMySQLCOUNT(*)
GROUP BYステートメントは、同じ値のグループ行にを使用するSQL命令です。各グループに存在する値の総数を返します。たとえば、各ユーザーの番号を個別に確認する場合は、COUNT(*)を使用して各ユーザーのレコードをカウントしながら、GROUPBY句を使用して「ユーザー」列を定義する必要があります。
>> 選択する ユーザー 、 カウント ((*)。 から データ 。ソーシャル GROUP BY ユーザー ;
次のように、GROUP BY句とともに行のカウントを実行しながら、3つ以上の列を選択できます。
>> 選択する ユーザー 、年、Webサイト、 カウント ((*)。 から データ 。ソーシャル GROUP BY Webサイト;
GROUP BYおよびCOUNT(*)と一緒にいくつかの条件を含むWHERE句を使用しながら行をカウントする場合は、それを行うこともできます。次のクエリは、列のレコードをフェッチしてカウントします:「ユーザー」、「ウェブサイト」、「年齢」。ウェブサイトの値は「Instagram」と「Snapchat」のみです。異なるユーザーの両方のWebサイトのレコードが1つしかないことがわかります。
>> 選択する ユーザー 、Webサイト、年、 カウント ((*)。 から データ 。ソーシャル どこ Webサイト='インスタグラム' または Webサイト=「Snapchat」 GROUP BY Webサイト、年;
GROUPBY句とORDERBY句を使用したMySQLCOUNT(*)
COUNT()メソッドと一緒にGROUPBY句とORDERBY句を試してみましょう。このクエリを使用してデータを降順で並べながら、テーブル「social」の行をフェッチしてカウントしてみましょう。
>> 選択する ユーザー 、Webサイト、年、 カウント ((*)。 から データ 。ソーシャル GROUP BY 年 注文者 カウント ((*)。 DESC ;
以下に示すクエリは、最初に行をカウントし、次にCOUNTが2より大きいレコードのみを昇順で表示します。
>> 選択する ユーザー 、年、 カウント ((*)。 から データ 。ソーシャル GROUP BY 年 持っている カウント ((*)。 >> 2 注文者 カウント ((*)。 ASC ;
結論
COUNT()メソッドを他のさまざまな句とともに使用して、一致するレコードまたは重複するレコードをカウントするために、考えられるすべてのメソッドを実行しました。