mysql count count distinct with examples
例を使用して、MySQLCOUNT関数のさまざまな形式の使用法について学習します。
COUNTは単純な集計関数ですが、非常に効果的で広く使用されています。非常に簡単に言えば、特定のSELECTクエリと条件に対して行数をカウントするために使用されます。
このチュートリアルでは、単純なCOUNT、条件付きのCOUNT、DISTINCT付きのCOUNT、GROUPBY付きのCOUNTなどの構文と使用法について説明します。
学習内容:
さまざまなタイプのMySQLCOUNT
タイプ | 説明 | 構文 |
---|---|---|
カウント(*) | COUNT(*)関数はnoを返します。 NULLおよび重複値を含む行を含むSELECTステートメントによって取得された行の数 | SELECT COUNT(*)FROM {tableName} |
COUNT(式) | COUNT(expression)は、expressionがnullでない値をカウントします。 式は、列名のような単純なものでも、IF関数のような複雑な式でもかまいません。 | {tableName}からCOUNT(Expression)を選択します |
COUNT(DISTINCT式) | COUNT(DISTINCT式)-DISTINCTキーワードは、式に対して一意の非null値のみをカウントする結果になります。 例えば --COUNT(DISTINCT customerName)-顧客名に異なる値を持つ行のみをカウントします | {tableName}からのSELECTCOUNT(DISTINCT式) |
MySQLCOUNTの例
テストデータ
MySQL COUNT関数の例では、次の表とデータを使用します。
テーブル:
#1)Product_Details
さまざまな商品の詳細を店舗に保管
- product_id – INT
- product_name – VARCHAR
- 価格– 10進数
- category_id – INT(FOREIGN KEY – Category_DetailsテーブルのID)
#2)Category_Details:
パスワードと同じセキュリティキーです
- category_id:INT
- category_name:VARCHAR
以下のクエリを使用して、テーブルを作成し、ダミーデータを挿入しましょう。
CREATE TABLE `product_details` ( `product_id` int NOT NULL, `product_name` varchar(100), `price` decimal(5,2), `category_id` int, FOREIGN KEY (category_id) REFERENCES category_details(category_id), PRIMARY KEY(product_id) ) CREATE TABLE `category_details` ( `category_id` int NOT NULL, `category_name` varchar(100), PRIMARY KEY(category_id) ) INSERT INTO `category_details` (`category_id`,`category_name`) VALUES (1,'FMCG'),(2,'FURNITURE'),(3,'FASHION'),(4,'APPLIANCES'),(5,'ELECTRONICS'); INSERT INTO `product_details` (`product_id`,`product_name`,`price`,`category_id`) VALUES (1,'Biscuits',0.5,1),(2,'Chocolates',1,1), (3, 'Washing Powder',5,1),(4, 'Apple IPhone', 500,5), (5, 'Batteries',2,5),(6,'Floor cleaner',2.5,1),(7,'Jeans- Levis',100,1),(8,'Mixer grinder',50,4),(9,'Capsicum',2,1),(10,'Sugar',1,1),(11,'Study Table',50,2);
上記で作成したテストデータを含むテーブルの画像を参照してください。
Product_Detailsテーブル
Category_Detailsテーブル
シンプルなCOUNT
このセクションでは、COUNT関数を最も単純な方法で説明します。
COUNTを使用して、NULLまたはDISTINCTチェックなしで行数を返します。
SELECT COUNT(*) FROM product_details;
出力:
カウント(*) |
---|
十一 |
上記のクエリでは、selectステートメントに対して返される行数を取得するだけです。
条件付きのカウント
次に、条件または列値を指定してCOUNT関数を使用します。
例: いいえを数えたいとしましょう。 product-namesにnull以外の値がない行の数。
product_name(または任意の列名)をCOUNT関数の式として追加すると、product_name行がNULLでない行の数がカウントされます。
SELECT COUNT(product_name) FROM product_details;
この場合、出力は11になります(すべてのテストデータにはすでにproduct_name列の値があるため)
出力:
COUNT(product_name) |
---|
十一 |
product_nameにNULL値を指定して新しい行を追加しましょう。
INSERT INTO `product_details` (`product_id`,`product_name`,`price`,`category_id`) VALUES (12,NULL,0.5,1);
SELECT COUNT(product_name) from product_details;
上記のCOUNTクエリは、非NULLのproduct_nameを持つすべての行のカウントを返します。
NULLのproduct_nameを含む行を挿入したため、結果には返されません。したがって、出力は11行のままになります。
出力:
COUNT(product_name) |
---|
十一 |
DISTINCTでカウント
前の例では、式でCOUNT関数を使用しました。式をDISTINCTコマンドと組み合わせて、UNIQUEであるすべてのNONNULL値を取得することもできます。
product_detailsテーブルからDISTINCTcategory_idを取得してみましょう。
SELECT COUNT(DISTINCT category_id) from product_details;
出力:
COUNT(DISTINCT category_id) |
---|
4 |
上記のように、出力は4で、合計数を表します。テーブルproduct_detailsのcategory_idの。
GROUPBYを使用したカウント
COUNTをGROUPBYと一緒に使用する例を見てみましょう。これは、グループ化された列に対してCOUNTを取得し、ターゲットのグループ化された列のさまざまな値に応じてデータを分析できる重要な組み合わせです。
例えば: いいえを見つけます。 product_detailsテーブルの各カテゴリに対する製品の数。
SELECT category_id, COUNT(*) FROM product_details GROUP BY category_id;
category_id | カウント(*) |
---|---|
1 | 7 |
二 | 1 |
4 | 1 |
5 | 二 |
上記のように、各category_idに対して、COUNT(*)列は各category_idに属する行数を表します。
IFでカウント
COUNT関数内でIF条件を使用する例を見てみましょう。 COUNT関数内にIF式を配置し、false条件の場合は値をNULLに設定し、true条件の場合はnull以外の値を設定できます。
すべてのNONNULL値は、単一行w.r.tCOUNT関数としてカウントされます。
例えば: COUNT関数を使用して、20ドルの価格範囲内のすべての製品を検索します。
SELECT COUNT(IF(price >0 AND price<20, 1, NULL)) AS count_less_than_20 FROM product_details;
出力:
count_less_than_20 |
---|
7 |
上記のクエリでは、価格範囲が0〜20のすべての商品のCOUNTを取得しました。FALSE条件の場合、行がさまざまな列値について評価されるときにカウントされない値をNULLに設定しました。 。
今日のjavaは何ですか
結合によるカウント
COUNTは、JOINステートメントでも使用できます。 COUNTは適用されないので。行の場合、JOINSを使用して単一のテーブルまたは複数のテーブルを操作するクエリの任意の組み合わせで使用できます。
例: product_detailsテーブルとcategory_detailsテーブルの両方を結合し、product_detailsテーブルからcategory_nameでカウントを見つけます。
SELECT category_name, COUNT(category_name) from product_details pd INNER JOIN category_details cd ON cd.category_id = pd.category_id GROUP BY category_name;
出力:
種別名 | COUNT(category_name) |
---|---|
FMCG | 7 |
家具 | 1 |
アプライアンス | 1 |
エレクトロニクス | 二 |
ヒントとコツ
COUNT関数の結果を表示する列の列エイリアスの使用:COUNT関数とともに列エイリアスを使用して、COUNT関数の結果を表示する列のユーザー定義の列名を設定できます。
例えば: category_detailsテーブルのカテゴリ数をカウントし、結果の列にcategory_countという名前を付けたい場合、以下のクエリを使用できます。
SELECT COUNT(*) as category_count from category_details;
出力:
category_count |
---|
5 |
よくある質問
Q#1)MySQLでCOUNT関数を使用するにはどうすればよいですか?
回答: COUNT関数は、3つの方法で使用できる集計関数です。
- カウント(*) - これにより、SELECTQUERYによって返されるすべての行がカウントされます。
- COUNT(式)– これにより、式のすべてのNONNULL値がカウントされます。
- COUNT(DISTINCT式)– これにより、式に対してすべてのNONNULL値とUNIQUE値がカウントされます。
Q#2)SQLのCount(*)とCount(1)の違いは何ですか?
回答: どちらのステートメントも同じように動作します。 MySQLのCOUNTの定義から、括弧()内のすべてが式であり、NULL以外の値はすべて1としてカウントされます。
したがって、この場合、*と1の両方がNON NULLとして扱われ、同じ結果が返されます。つまり、以下の両方のクエリの結果は同じになります。
SELECT COUNT(*) from product_details; SELECT COUNT(1) from product_details;
結論
このチュートリアルでは、COUNT関数とMySQLが提供するさまざまなバリエーションについて学習しました。
また、COUNTとGROUP BYを組み合わせたり、COUNT関数内にIF関数を記述したりするなど、さまざまなシナリオでCOUNTを使用する方法についても説明しました。
COUNT関数は、MySQLで最も重要で広く使用されている関数の1つであり、1つ以上のテーブルに指定された条件に応じてデータを集計するために主に使用されます。