Direkomendasikan, 2024

Pilihan Editor

Perbedaan Antara Di Mana dan Memiliki Klausa di SQL

WHERE dan HAVING klausa terutama digunakan dalam pernyataan query SQL, ini memungkinkan kita untuk membatasi kombinasi dalam hubungan hasil melalui penggunaan predikat tertentu. Perbedaan utama antara WHERE dan HAVING adalah bahwa klausa WHERE menentukan kondisi untuk memilih tupel (baris) dari relasi, termasuk kondisi gabungan jika diperlukan. Di sisi lain, klausa HAVING menentukan kondisi pada kelompok yang dipilih daripada pada masing-masing tupel.

SQL adalah singkatan dari Structured Query Language ; itu adalah bahasa basis data komprehensif atau deklaratif yang digunakan untuk mengakses data dari basis data.

Grafik perbandingan

Dasar untuk perbandinganDIMANAMEMILIKI
DasarDiimplementasikan dalam operasi baris.Diimplementasikan dalam operasi kolom.
Diaplikasikan keBaris tunggalBaris atau grup yang diringkas.
Pengambilan dataItu hanya mengambil data tertentu dari baris tertentu sesuai dengan kondisi.Pada awalnya, data lengkap diambil kemudian dipisahkan sesuai dengan kondisi.
Fungsi AgregatTidak dapat muncul dalam klausa WHERE.Dapat muncul dalam klausa HAVING.
Digunakan denganPILIH dan pernyataan lainnya seperti PEMBARUAN, HAPUS atau salah satunya.Tidak dapat digunakan tanpa pernyataan SELECT.
Bertindak sebagaiPra-filterPost-filter
KELOMPOK OLEHDatang setelah MANA.Datang setelah MEMILIKI.

Definisi Where Clause

Klausa SQL WHERE digunakan untuk menggambarkan suatu kondisi pada saat mengambil data dari satu tabel atau dengan bergabung dengan beberapa tabel. Ini hanya mengembalikan nilai tertentu dari tabel jika kondisi yang diberikan terpenuhi. Klausa WHERE digunakan untuk menyerap catatan dan hanya mengambil catatan yang diperlukan.

SQL juga mengimplementasikan penghubung logis dan, atau dan tidak dalam klausa WHERE yang juga dikenal sebagai kondisi boolean ; syaratnya harus benar untuk mengambil tupel. Operan dari ekspresi penghubung logis melibatkan operator pembanding seperti <, <=, >, > =, =, dan . Operator perbandingan ini membandingkan string dan ekspresi aritmatika. Ini dapat digunakan dalam pernyataan SELECT, serta dalam UPDATE, HAPUS pernyataan.

Mari kita ambil contoh. Tabel yang ditunjukkan di bawah ini dinamai sebagai tabel ' Penjualan ' terdiri dari atribut ' Produk ' dan ' Sales_amount '.

Permintaan berikut akan ditulis untuk menghitung Total_sales telepon dan pengeras suara.

 SELECT Product, jumlah (Sales_amount) AS Total_sales DARI Penjualan WHERE Product in ('Phone', 'Speakers') GROUP BY Product; 

Output berikut adalah output yang dihasilkan di mana baris disaring terlebih dahulu, baris telepon dan speaker diambil kemudian fungsi agregat dilakukan.

Definisi Memiliki Klausul

SQL menyediakan klausa HAVING yang dapat digunakan bersama dengan klausa GROUP BY . Klausa HAVING ini membantu dalam mengambil nilai-nilai untuk kelompok yang memenuhi kondisi tertentu. Klausa WHERE juga dapat digunakan bersama dengan klausa HAVING selama pemilihan, klausa WHERE menyaring baris individual. Baris-baris tersebut kemudian dikelompokkan, dan perhitungan agregat dilakukan, pada akhirnya HAVING klausa menyaring grup.

Berperilaku sama dengan WHERE ketika GROUP BY kata kunci tidak digunakan. Fungsi Grup seperti min, maks, rata-rata, jumlah, dan jumlah hanya dapat muncul dalam dua klausa: klausa SELECT dan HAVING. Ini memberikan kondisi pada tupel yang sesuai dengan setiap nilai dalam kelompok atribut. Satu-satunya kumpulan catatan yang memenuhi persyaratan akan ditampilkan sebagai hasilnya.

Di sini juga kita mengambil contoh yang sama dengan klausa WHERE dan mempertimbangkan tabel ' Penjualan ' yang sama. Saat kami ingin menghitung Total_sales ponsel dan speaker menggunakan klausa HAVING, kami akan menulis kueri berikut.

 SELECT Product, jumlah (Sales_amount) AS Total_sales DARI GRUP Penjualan DENGAN Produk HAVING Produk dalam ('telepon', 'Pembicara'); 

Kueri menghasilkan output berikut di mana produk diambil terlebih dahulu, kemudian fungsi agregat (jumlah) dilakukan dan pada kelompok terakhir difilter tidak seperti klausa WHERE.

Ketika kami ingin menemukan hanya produk-produk tersebut di mana Total_sales lebih besar dari 1000. Kueri dapat ditulis sebagai:

 SELECT Produk, jumlah (Sales_amount) AS Total_sales DARI GRUP Penjualan DENGAN jumlah Produk HAVING (Sales_amount)> 1000; 

Output yang dihasilkan adalah:

Ini tidak dapat dilakukan dengan menggunakan klausa WHERE terlepas dari HAVING dan itu menghasilkan pesan kesalahan karena klausa WHERE tidak dapat digunakan dengan fungsi agregat.

Perbedaan Kunci Antara Di Mana dan Memiliki Klausul

  1. Klausa WHERE digunakan dalam operasi baris dan diterapkan pada satu baris sedangkan klausa HAVING digunakan dalam operasi kolom dan dapat diterapkan pada baris atau grup yang diringkas.
  2. Dalam klausa WHERE, data yang diinginkan diambil sesuai dengan kondisi yang diterapkan. Sebaliknya, klausa HAVING mengambil seluruh data kemudian pemisahan dilakukan sesuai dengan kondisi.
  3. Fungsi agregat seperti min, jumlah, maks, rata-rata tidak akan pernah muncul bersama dengan klausa WHERE. Sebaliknya, fungsi-fungsi ini dapat muncul dalam klausa HAVING.
  4. Klausa HAVING tidak dapat digunakan tanpa pernyataan SELECT. Sebaliknya, DI MANA dapat digunakan dengan SELECT, UPDATE, DELETE, dll.
  5. WHERE clause berperilaku sebagai pra-filter sedangkan HAVING clause bertindak sebagai post-filter.
  6. WHERE klausa saat digunakan dengan GROUP BY, muncul sebelum GROUP BY. Ini menandakan bahwa baris WHERE filter sebelum perhitungan agregat dilakukan. Di sisi lain, HAVING muncul setelah GROUP BY, yang artinya filter setelah perhitungan agregat dilakukan.

Kesimpulan

Klausa WHERE dan HAVING berfungsi dengan cara yang sama kecuali fitur tambahan yang populer untuk klausa HAVING. Klausa HAVING dapat bekerja secara efisien dengan fungsi agregat sementara WHERE tidak dapat dioperasikan dengan fungsi agregat.

Top