Ringkasan :dalam tutorial ini, Anda akan mempelajari cara menggunakan SQLite HAVING
klausa untuk menentukan kondisi filter untuk grup atau agregat.
Pengantar SQLite HAVING
klausa
SQLite HAVING
klausa adalah klausa opsional dari SELECT
penyataan. HAVING
klausa menentukan kondisi pencarian untuk grup.
Anda sering menggunakan HAVING
klausa dengan GROUP BY
ayat. GROUP BY
klausa mengelompokkan sekumpulan baris ke dalam kumpulan baris atau grup ringkasan. Kemudian HAVING
klausa memfilter grup berdasarkan kondisi tertentu.
Jika Anda menggunakan HAVING
klausa, Anda harus menyertakan GROUP BY
ayat; jika tidak, Anda akan mendapatkan kesalahan berikut:
Error: a GROUP BY clause is required before HAVING
Code language: JavaScript (javascript)
Perhatikan bahwa HAVING
klausa diterapkan setelah GROUP BY
klausa, sedangkan WHERE
klausa diterapkan sebelum GROUP BY
klausa.
Berikut ini mengilustrasikan sintaks HAVING
klausa:
SELECT
column_1,
column_2,
aggregate_function (column_3)
FROM
table
GROUP BY
column_1,
column_2
HAVING
search_condition;
Code language: SQL (Structured Query Language) (sql)
Dalam sintaks ini, HAVING
klausa mengevaluasi search_condition
untuk setiap grup sebagai ekspresi Boolean. Ini hanya menyertakan grup dalam hasil akhir yang ditetapkan jika evaluasinya benar.
SQLite HAVING
contoh klausa
Kami akan menggunakan tracks
tabel dalam database sampel untuk demonstrasi.
Untuk menemukan jumlah trek untuk setiap album, gunakan GROUP BY
klausa sebagai berikut:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Untuk menemukan jumlah trek untuk album dengan id 1, kami menambahkan HAVING
klausa untuk pernyataan berikut:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING albumid = 1;
Cobalah
Kami telah merujuk ke AlbumId
kolom di HAVING
klausa.
Untuk menemukan album yang memiliki jumlah trek antara 18 dan 20, Anda menggunakan fungsi agregat di HAVING
klausa seperti yang ditunjukkan dalam pernyataan berikut:
SELECT
albumid,
COUNT(trackid)
FROM
tracks
GROUP BY
albumid
HAVING
COUNT(albumid) BETWEEN 18 AND 20
ORDER BY albumid;
Code language: SQL (Structured Query Language) (sql)
Cobalah
SQLite HAVING
klausa dengan INNER JOIN
contoh
Pernyataan berikut menanyakan data dari tracks
dan albums
tabel menggunakan gabungan dalam untuk menemukan album yang memiliki panjang total lebih dari 60.000.000 milidetik.
SELECT
tracks.AlbumId,
title,
SUM(Milliseconds) AS length
FROM
tracks
INNER JOIN albums ON albums.AlbumId = tracks.AlbumId
GROUP BY
tracks.AlbumId
HAVING
length > 60000000;
Code language: SQL (Structured Query Language) (sql)
Cobalah
Dalam tutorial ini, Anda telah mempelajari cara menggunakan SQLite HAVING
klausa untuk menentukan kondisi pencarian untuk grup.