Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime
Filter hasil yang dihasilkan oleh GROUP BY berdasarkan pada kondisi yang ditentukan. Sering digunakan bersama dengan klausul GROUP BY.
Sintaks
HAVING boolean_expression
Parameter-parameternya
boolean_expression
Ekspresi apa pun yang mengevaluasi ke jenis hasil
BOOLEAN. Dua atau lebih ekspresi dapat digabungkan bersama dengan menggunakan operator logis sepertiANDatauOR.Ekspresi yang ditentukan dalam klausul
HAVINGhanya boleh mengacu pada:- Ekspresi konstanta
- Ekspresi yang muncul di GROUP BY
- Fungsi agregat
Jika ekspresi mereferensikan kolom yang tidak ada dalam klausa
GROUP BYatau dibungkus dalam fungsi agregat, Azure Databricks menaikkan MISSING_AGGREGATION.
Kondisi kesalahan umum
Contoh
> CREATE TABLE dealer (id INT, city STRING, car_model STRING, quantity INT);
> INSERT INTO dealer VALUES
(100, 'Fremont' , 'Honda Civic' , 10),
(100, 'Fremont' , 'Honda Accord', 15),
(100, 'Fremont' , 'Honda CRV' , 7),
(200, 'Dublin' , 'Honda Civic' , 20),
(200, 'Dublin' , 'Honda Accord', 10),
(200, 'Dublin' , 'Honda CRV' , 3),
(300, 'San Jose', 'Honda Civic' , 5),
(300, 'San Jose', 'Honda Accord', 8);
-- `HAVING` clause referring to column in `GROUP BY`.
> SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING city = 'Fremont';
Fremont 32
-- `HAVING` clause referring to aggregate function.
> SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING sum(quantity) > 15;
Dublin 33
Fremont 32
-- `HAVING` clause referring to aggregate function by its alias.
> SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING sum > 15;
Dublin 33
Fremont 32
-- `HAVING` clause referring to a different aggregate function than what is present in
-- `SELECT` list.
> SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING max(quantity) > 15;
Dublin 33
-- `HAVING` clause referring to constant expression.
> SELECT city, sum(quantity) AS sum FROM dealer GROUP BY city HAVING 1 > 0 ORDER BY city;
Dublin 33
Fremont 32
San Jose 13
-- `HAVING` clause without a `GROUP BY` clause.
> SELECT sum(quantity) AS sum FROM dealer HAVING sum(quantity) > 10;
78
-- Column not wrapped in aggregate function.
> SELECT city, quantity FROM dealer GROUP BY city HAVING sum(quantity) > 15;
Error: MISSING_AGGREGATION