Impala - Clause Group By

L'Impala GROUP BY La clause est utilisée en collaboration avec l'instruction SELECT pour organiser des données identiques en groupes.

Syntaxe

Voici la syntaxe de la clause GROUP BY.

select data from table_name Group BY col_name;

Exemple

Supposons que nous ayons une table nommée customers dans la base de données my_db et son contenu est le suivant -

[quickstart.cloudera:21000] > select * from customers; 
Query: select * from customers 
+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  | 
| 2  | Khilan   | 25  | Delhi     | 15000  | 
| 3  | kaushik  | 23  | Kota      | 30000  | 
| 4  | Chaitali | 25  | Mumbai    | 35000  | 
| 5  | Hardik   | 27  | Bhopal    | 40000  | 
| 6  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+ 
Fetched 6 row(s) in 0.51s

Vous pouvez obtenir le montant total du salaire de chaque client en utilisant la requête GROUP BY comme indiqué ci-dessous.

[quickstart.cloudera:21000] > Select name, sum(salary) from customers Group BY name;

Lors de l'exécution, la requête ci-dessus donne la sortie suivante.

Query: select name, sum(salary) from customers Group BY name 
+----------+-------------+ 
| name     | sum(salary) | 
+----------+-------------+ 
| Ramesh   | 20000       | 
| Komal    | 32000       | 
| Hardik   | 40000       | 
| Khilan   | 15000       | 
| Chaitali | 35000       | 
| kaushik  | 30000       |
+----------+-------------+ 
Fetched 6 row(s) in 1.75s

Supposons que cette table comporte plusieurs enregistrements comme indiqué ci-dessous.

+----+----------+-----+-----------+--------+ 
| id | name     | age | address   | salary | 
+----+----------+-----+-----------+--------+ 
| 1  | Ramesh   | 32  | Ahmedabad | 20000  |
| 2  | Ramesh   | 32  | Ahmedabad | 1000|  | 
| 3  | Khilan   | 25  | Delhi     | 15000  | 
| 4  | kaushik  | 23  | Kota      | 30000  | 
| 5  | Chaitali | 25  | Mumbai    | 35000  |
| 6  | Chaitali | 25  | Mumbai    | 2000   |
| 7  | Hardik   | 27  | Bhopal    | 40000  | 
| 8  | Komal    | 22  | MP        | 32000  | 
+----+----------+-----+-----------+--------+

Maintenant encore, vous pouvez obtenir le montant total des salaires des employés, compte tenu des entrées répétées d'enregistrements, en utilisant le Group By clause comme indiqué ci-dessous.

Select name, sum(salary) from customers Group BY name;

Lors de l'exécution, la requête ci-dessus donne la sortie suivante.

Query: select name, sum(salary) from customers Group BY name 
+----------+-------------+ 
| name     | sum(salary) | 
+----------+-------------+ 
| Ramesh   | 21000       | 
| Komal    | 32000       | 
| Hardik   | 40000       | 
| Khilan   | 15000       | 
| Chaitali | 37000       | 
| kaushik  | 30000       | 
+----------+-------------+
Fetched 6 row(s) in 1.75s