ホームページ  >  記事  >  データベース  >  mysqlで数量をクエリしてカウントする方法

mysqlで数量をクエリしてカウントする方法

青灯夜游
青灯夜游オリジナル
2021-12-07 11:32:5841795ブラウズ

mysql では、SELECT ステートメントを使用してデータをクエリし、COUNT() 関数を使用してクエリ結果の数をカウントできます。構文は「SELECT COUNT(*) FROM table name [...」です。 ];" または "SELECT COUNT (フィールド名) FROM テーブル名[...];"。

mysqlで数量をクエリしてカウントする方法

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql では、SELECT ステートメントを使用してデータをクエリし、COUNT() 関数を使用してクエリ結果の数をカウントできます。

SELECT の構文形式は次のとおりです。

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

このうち、各句の意味は次のとおりです。

  • {*|2a8f4768978479bb174c01bec73b0b64}クエリ対象のフィールドの名前を示す、アスタリスク ワイルドカード文字を含むフィールド リスト。

  • ##1db5ee5e96c8774919312b86ea1e4ece、e612022ea012f486e2b8f4eb394bb6e0…、表 1 と表 2 は、単一または複数のクエリ データのソースを表します。

  • WHERE ffbeece48539e6983ff3249db04f27c9 はオプションです。選択した場合、クエリ データはクエリ条件を満たす必要があります。

  • GROUP BY3b26370eed070b4e2af74808aa8f2dee、この句は、クエリされたデータを表示し、指定されたフィールドに従ってグループ化する方法を MySQL に指示します。

  • [ORDER BY0f5333100010744a1571ca8552350494]

    、この句はクエリされたデータを表示する順序を MySQL に指示します。実行可能な並べ替えは昇順 (ASC) ) と降順 (DESC)。デフォルトでは昇順です。

  • [LIMIT[ab76cfca1a1dc7ff1291dcdf873f72ec,]bc984d207842008469e14f06321b6461]
  • 、この句は、クエリされたデータ項目の数を毎回表示するように MySQL に指示します。

COUNT()

この関数は、データ テーブルに含まれるレコード行の総数をカウントするか、列に含まれるデータ行の数を返します。クエリ結果に基づく

    COUNT(*)
  • 列に値があるかどうかに関係なく、テーブル内の行の合計数を計算します。ヌル値。

  • COUNT(式)
  • NULL 値を含まない行の数をカウントします。

  • COUNT(DISTINCT 式)
  • NULL 値を含まない一意の行の数を返します

    COUNT() 関数の戻り値の型は
  • BIGINT
です。一致する行が見つからない場合、COUNT() 関数は

0 を返します。 MySQL COUNT の例

demo

という名前の新しいテーブルを作成し、サンプル データを挿入しましょう。

USE testdb;
-- create a demos table
CREATE TABLE IF NOT EXISTS demos(
 id int auto_increment primary key,
 val int 
);
-- insert some sample data
INSERT INTO demos(val)
VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);
-- select data from demos table
SELECT * FROM demos;
上記のクエリ ステートメントを実行すると、次の結果が得られます。
+----+------+
| id | val  |
+----+------+
|  1 |    1 |
|  2 |    1 |
|  3 |    2 |
|  4 |    2 |
|  5 | NULL |
|  6 |    3 |
|  7 |    4 |
|  8 | NULL |
|  9 |    5 |
+----+------+
9 rows in set

demos

テーブル内のすべての行をカウントするには、

COUNT(*)# を使用してください。以下に示す ## 関数: <pre class="brush:js;toolbar:false;">mysql&gt; SELECT COUNT(*) FROM demos; +----------+ | COUNT(*) | +----------+ | 9 | +----------+ 1 row in set</pre> WHERE 句を追加して、カウントする条件を指定できます。たとえば、値を含む

val

列のみをカウントします。 ## と等しい 行 #2 については、次のクエリを使用します。

mysql> SELECT COUNT(*) FROM demos WHERE val = 2;
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+
1 row in set
val 列が COUNT

関数で指定されている場合、

COUNT 関数は、val 列に NULL 以外の値のみが含まれるすべての行をカウントします。次のクエリを参照してください。

SELECT COUNT(*) FROM demos WHERE val = 2;
val 列の 2 つの NULL

値は無視されます。

demos テーブル内の一意の行をカウントするには、次のクエリのように、DISTINCT

演算子を

COUNT 関数に追加します。ステートメント:

SELECT COUNT(DISTINCT val) FROM demos;
上記のクエリ ステートメントを実行すると、次の結果が得られます。
mysql> SELECT COUNT(DISTINCT val) FROM demos;
+---------------------+
| COUNT(DISTINCT val) |
+---------------------+
|                   5 |
+---------------------+
1 row in set
2 つの重複する値を無視します。1

2

、およびカウント NULL

値に 2 つの GROUP BYを使用した MySQL COUNT さまざまなグループ内のデータをカウントするために、COUNT

関数を

GROUP BY

句と組み合わせて使用​​することがよくあります。以下の

products テーブルの構造を参照してください -

mysql> desc products;
+--------------------+---------------+------+-----+---------+------------------+
| Field              | Type          | Null | Key | Default | Extra            |
+--------------------+---------------+------+-----+---------+------------------+
| productCode        | varchar(15)   | NO   | PRI |         |                  |
| productName        | varchar(70)   | NO   | MUL | NULL    |                  |
| productLine        | varchar(50)   | NO   | MUL | NULL    |                  |
| productScale       | varchar(10)   | NO   |     | NULL    |                  |
| productVendor      | varchar(50)   | NO   |     | NULL    |                  |
| productDescription | text          | NO   |     | NULL    |                  |
| quantityInStock    | smallint(6)   | NO   |     | NULL    |                  |
| buyPrice           | decimal(10,2) | NO   |     | NULL    |                  |
| MSRP               | decimal(10,2) | NO   |     | NULL    |                  |
| stockValue         | double        | YES  |     | NULL    | STORED GENERATED |
+--------------------+---------------+------+-----+---------+------------------+
10 rows in set
たとえば、各製品ラインの製品数を確認するには、# を指定して COUNT 関数を使用できます。次のクエリに示すように ##GROUP BY 句を使用します。

SELECT productline, count(*) FROM products GROUP BY productline;

上記のコードを実行すると、次の結果が得られます -<pre class="brush:html;toolbar:false;">mysql&gt; SELECT productline, count(*) FROM products GROUP BY productline; +------------------+----------+ | productline | count(*) | +------------------+----------+ | Classic Cars | 38 | | Motorcycles | 13 | | Planes | 12 | | Ships | 9 | | Trains | 3 | | Trucks and Buses | 11 | | Vintage Cars | 24 | +------------------+----------+ 7 rows in set</pre>サプライヤーから提供された製品の数量を確認するには、次のクエリを使用してください: <pre class="brush:js;toolbar:false;">SELECT productvendor, count(*) FROM products GROUP BY productvendor;</pre>上記のコードを実行すると、次の結果が得られます-

mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor;
+---------------------------+----------+
| productvendor             | count(*) |
+---------------------------+----------+
| Autoart Studio Design     |        8 |
| Carousel DieCast Legends  |        9 |
| Classic Metal Creations   |       10 |
| Exoto Designs             |        9 |
| Gearbox Collectibles      |        9 |
| Highway 66 Mini Classics  |        9 |
| Min Lin Diecast           |        8 |
| Motor City Art Classics   |        9 |
| Red Start Diecast         |        7 |
| Second Gear Diecast       |        8 |
| Studio M Art Models       |        8 |
| Unimax Art Galleries      |        8 |
| Welly Diecast Productions |        8 |
+---------------------------+----------+
13 rows in set

少なくとも

9

製品を提供しているサプライヤーを見つけるには、次のクエリ ステートメントに示すように、

COUNT

関数の

HAVING

句: <pre class="brush:js;toolbar:false;">SELECT productvendor, count(*) FROM products GROUP BY productvendor HAVING count(*) &gt;= 9;</pre>上記のコードを実行すると、次の結果が得られます-<pre class="brush:js;toolbar:false;">mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor HAVING count(*) &gt;= 9; +--------------------------+----------+ | productvendor | count(*) | +--------------------------+----------+ | Carousel DieCast Legends | 9 | | Classic Metal Creations | 10 | | Exoto Designs | 9 | | Gearbox Collectibles | 9 | | Highway 66 Mini Classics | 9 | | Motor City Art Classics | 9 | +--------------------------+----------+ 6 rows in set</pre> MySQL COUNT IF が使用可能

COUNT

関数内の制御フロー関数 (

IF

IFNULL

CASE## など) # などを使用して、値が条件に一致する行をカウントします。 たとえば、次のクエリでは、キャンセルされた注文、一時停止された注文、および異議申し立て中の注文の数を確認できます。

SELECT COUNT(IF(status=&#39;Cancelled&#39;,1, NULL)) &#39;Cancelled&#39;,
       COUNT(IF(status=&#39;On Hold&#39;,1, NULL)) &#39;On Hold&#39;,
       COUNT(IF(status=&#39;Disputed&#39;,1, NULL)) &#39;Disputed&#39;
FROM orders;
上記のコードを実行すると、次の結果が得られます。
mysql> SELECT COUNT(IF(status=&#39;Cancelled&#39;,1, NULL)) &#39;Cancelled&#39;,
       COUNT(IF(status=&#39;On Hold&#39;,1, NULL)) &#39;On Hold&#39;,
       COUNT(IF(status=&#39;Disputed&#39;,1, NULL)) &#39;Disputed&#39;
FROM orders;
+-----------+---------+----------+
| Cancelled | On Hold | Disputed |
+-----------+---------+----------+
|         6 |       4 |        3 |
+-----------+---------+----------+
1 row in set
If ステータス注文がキャンセル、予約、または異議申し立ての場合、IF 関数は 1

を返し、それ以外の場合は

NULL

を返します。

COUNT

関数は

NULL 値ではなく 1 のみをカウントするため、クエリは対応するステータスに基づいて注文数を返します。 [関連する推奨事項: mysql ビデオ チュートリアル ]

以上がmysqlで数量をクエリしてカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。