Impala - Clause

le Having clause dans Impala vous permet de spécifier des conditions qui filtrent les résultats de groupe qui apparaissent dans les résultats finaux.

En général, le Having clause est utilisée avec group byclause; il place des conditions sur les groupes créés par la clause GROUP BY.

Syntaxe

Voici la syntaxe du Havingclause.

select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]

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  | 
| 7  | ram      | 25  | chennai     | 23000  | 
| 8  | rahim    | 22  | vizag       | 31000  | 
| 9  | robert   | 23  | banglore    | 28000  | 
+----+----------+-----+-----------+--------+ 
Fetched 9 row(s) in 0.51s

Voici un exemple d'utilisation Having clause dans Impala -

[quickstart.cloudera:21000] > select max(salary) from customers group by age having max(salary) > 20000;

Cette requête regroupe initialement la table par âge et sélectionne les salaires maximums de chaque groupe et affiche les salaires supérieurs à 20000, comme indiqué ci-dessous.

20000 
+-------------+ 
| max(salary) |
+-------------+ 
| 30000       |
| 35000       | 
| 40000       | 
| 32000       | 
+-------------+ 
Fetched 4 row(s) in 1.30s