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

MySQLでDISTINCTとGROUPBYを選択しますか?


SELECT DISTINCTを使用して、個別の値を指定できます。重複するレコードを削除するために使用し、集計関数でも使用できます。例:MAX、AVGなど。これは単一の列に適用できます。

ここで、列にSELECTDISTINCTを使用するテーブルを作成しています。 CREATEコマンドを使用してテーブルを作成する-

mysql> CREATE TABLE DistinctDemo
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.64 sec)

レコードの挿入-

mysql> INSERT into DistinctDemo values(1,'John');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(2,'John');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into DistinctDemo values(3,'Bob');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(4,'John');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into DistinctDemo values(5,'David');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(6,'Bob');
Query OK, 1 row affected (0.16 sec)
>

SELECTコマンドを使用してすべてのレコードを表示します。クエリは次のとおりです-

mysql> SELECT * from DistinctDemo;

上記のクエリを実行すると、次の出力が得られます-

+------+-------+
| id   | name  |
+------+-------+
| 1    | John  |
| 2    | John  |
| 3    | Bob   |
| 4    | John  |
| 5    | David |
| 6    | Bob   |
+------+-------+
6 rows in set (0.00 sec)

上記では、ジョンとボブが重複している6つのレコードがあります。 DISTINCTを適用して、重複するレコードを削除できます。構文は次のとおりです-

SELECT distinctcolumn_name from yourTableName order by column_name;

今、私は上記のクエリを適用して重複を削除しています-

mysql> SELECT distinct name from DistinctDemo;

以下は出力です

+-------+
| name  |
+-------+
| John  |
| Bob   |
| David |
+-------+
3 rows in set (0.00 sec)

select group byを使用して、さまざまな列からデータを取得し、1つ以上の列にグループ化できます。これは、集計関数でも適用できます。例:SUM、AVGなど

まず、CREATEコマンドを使用してテーブルを作成しています-

mysql> CREATE table GroupDemo1
-> (
-> id int,
-> name varchar(100),
-> address varchar(100)
-> );
Query OK, 0 rows affected (0.68 sec)

テーブルを作成した後、次のようにレコードをテーブルに挿入しています-

mysql> INSERT into GroupDemo1 values(1,'John','US');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into GroupDemo1 values(2,'Bob','UK');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into GroupDemo1 values(3,'David','US');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into GroupDemo1 values(4,'David','US');
Query OK, 1 row affected (0.15 sec)

これで、SELECTコマンドを使用してすべてのレコードを表示できます-

mysql> SELECT * from GroupDemo1;

以下は出力です-

+------+-------+---------+
| id   | name  | address |
+------+-------+---------+
| 1    | John  | US      |
| 2    | Bob   | UK      |
| 3    | David | US      |
| 4    | David | US      |
+------+-------+---------+
4 rows in set (0.00 sec)

GROUP BYを適用して、同じアドレスと出現回数を確認します。これが構文です-

SELECT column_name1,......N aggregate function( ) from yourTableName group by
column_name;

上記の構文をGROUPBY-

に適用してみましょう。
mysql> SELECT address, count(*) from GroupDemo1 group by address;

以下は出力です-

+---------+----------+
| address | count(*) |
+---------+----------+
| US      | 3        |
| UK      | 1        |
+---------+----------+
2 rows in set (0.00 sec)

  1. テーブルの個別の列から平均を選択するMySQLクエリ?

    平均を取得するには、AVG()を使用し、それをDISTINCTとともに使用して、個別のレコードから計算します。まずテーブルを作成しましょう- mysql> create table DemoTable1934    (    StudentName varchar(20),    StudentMarks int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into

  2. MySQLで最高の給与を選択しますか?

    これには、MAX()を使用できます。構文は次のとおりです- select MAX(yourColumnName) AS anyAliasName from yourTableName; テーブルを作成しましょう- mysql> create table demo44 −> ( −> employee_id int not null auto_increment primary key, −> employee_name varchar(20), −> employee_salary int −>