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 HAVINGCode 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.