MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL-日付別のグループとカウント?


これには、GROUP BY句とCOUNT()関数を使用できます。構文は次のとおりです-

SELECT yourColumnName1,yourColumnName2,..N,COUNT(*) as anyAliasName FROM yourTableName
GROUP BY yourColumnName1,yourColumnName2;

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> create table GroupAndCountByDate
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> TripDate date,
   -> ShopId int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.79 sec)

これで、insertコマンドを使用してテーブルにいくつかのレコードを挿入できます。クエリは次のとおりです-

mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-01-31',10);
Query OK, 1 row affected (0.52 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-02-01',15);
Query OK, 1 row affected (0.17 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-01-31',10);
Query OK, 1 row affected (0.23 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-02-01',15);
Query OK, 1 row affected (0.31 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-03-23',20);
Query OK, 1 row affected (0.15 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-04-21',25);
Query OK, 1 row affected (0.20 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-03-13',20);
Query OK, 1 row affected (0.16 sec)
mysql> insert into GroupAndCountByDate(TripDate,ShopId) values('2019-04-06',25);
Query OK, 1 row affected (0.17 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです-

mysql> select *from GroupAndCountByDate;

以下は出力です-

+----+------------+--------+
| Id | TripDate   | ShopId |
+----+------------+--------+
|  1 | 2019-01-31 |     10 |
|  2 | 2019-02-01 |     15 |
|  3 | 2019-01-31 |     10 |
|  4 | 2019-02-01 |     15 |
|  5 | 2019-03-23 |     20 |
|  6 | 2019-04-21 |     25 |
|  7 | 2019-03-13 |     20 |
|  8 | 2019-04-06 |     25 |
+----+------------+--------+
8 rows in set (0.00 sec)

これがGROUPへのクエリであり、日付でカウントします-

mysql> select TripDate,ShopId,COUNT(*) as TOTALTRIP
   -> from GroupAndCountByDate
   -> group by TripDate,ShopId;

以下は出力です-

+------------+--------+-----------+
| TripDate   | ShopId | TOTALTRIP |
+------------+--------+-----------+
| 2019-01-31 |      10 |        2 |
| 2019-02-01 |      15 |        2 |
| 2019-03-23 |      20 |        1 |
| 2019-04-21 |      25 |        1 |
| 2019-03-13 |      20 |        1 |
| 2019-04-06 |      25 |        1 |
+------------+--------+-----------+
6 rows in set (0.00 sec)

  1. 単一のMySQLクエリでGROUPBYとCOUNTを使用して、重複するレコードをグループ化し、対応する最大値を表示します

    最初にテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> ClientId int,    -> Value int    -> ); Query OK, 0 rows affected (0.79 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(10,678); Query OK, 1 row affected

  2. COUNT関数とGROUPBYを記述したSQLクエリの例

    問題: TRANSACTIONS DB2テーブルにクエリを記述して、特定のトランザクション(TRANSACTION_ID)に割り当てられた注文数(ORDER_ID)をリストします。 解決策 以下のクエリを使用して、TRANSACTIONSDB2テーブルの特定のトランザクションIDに割り当てられた注文の数を見つけることができます。 例 SELECT TRANSACTION_ID, COUNT(ORDER_ID) FROM TRANSACTIONS    GROUP BY TRANSACTION_ID ORDER_IDでGROUPBY関数を使用して、結果を順番にフェッチ