Salah satu masalah paling umum yang melibatkan query database adalah mencari nilai terbesar/terkecil pada tiap kategori/tipe. Sebagai contoh adalah mencari pencetak gol terbanyak pada masing-masing dari 4 klub teratas sepak bola Liga Inggris berikut ini.
Nama Klub Gol ------------------------------------------ Sergio Agüero Man City 23 Edin Džeko Man City 14 Mario Balotelli Man City 13 Wayne Rooney Man United 27 Javier Hernández Man United 10 Robin Van Persie Arsenal 30 Emmanuel Adebayor Tottenham 17 Jermain Defoe Tottenham 11 Rafael Van der Vaart Tottenham 11Berikut ini adalah hasil yang diinginkan.
Nama Klub Gol ------------------------------------------ Robin Van Persie Arsenal 30 Wayne Rooney Man United 27 Sergio Agüero Man City 23 Emmanuel Adebayor Tottenham 17Untuk menghasilkan keluaran seperti di atas, paling tidak kita membutuhkan dua langkah. Mencari jumlah gol yang diinginkan, kemudian tampilkan field lainnya berdasarkan gol yang sudah dicari tadi.
Langkah pertama adalah mencari gol terbanyak pada masing-masing klub tanpa melihat siapa pencetak golnya.
SELECT Klub, MAX(Gol) as maxGol FROM `skorer` GROUP BY Klub Klub maxGol --------------------- Arsenal 30 Man City 23 Man United 27 Tottenham 17Hasil bisa berbeda tergantung teknik penyortingan yang digunakan. Pada contoh di atas penyortingan menaik (ascending) berdasarkan field “Klub”.
Langkah kedua adalah menampilkan field sisanya (Nama) dengan cara menggabungkan table hasil query pertama dengan table mula-mula (skorer).
SELECT b.Nama, b.Klub, b.Gol FROM ( SELECT Klub, MAX(Gol) AS maxGol FROM `skorer` GROUP BY Klub ) AS a INNER JOIN `skorer` AS b ON a.Klub = b.Klub AND a.maxGol = b.Gol Nama Klub Gol ------------------------------------------ Sergio Agüero Man City 23 Wayne Rooney Man United 27 Robin Van Persie Arsenal 30 Emmanuel Adebayor Tottenham 17Jika ingin diurutkan sesuai contoh, tinggal tambahkan ORDER BY Gol DESC pada akhir query.
Sebenarnya ada query yang lebih singkat untuk menampilkan hasil seperti di atas, yaitu dengan menggunakan sub-query untuk mencari gol terbanyak pada masing-masing klub.
SELECT * FROM `skorer` WHERE Gol = ( SELECT MAX(Gol) FROM `skorer` AS a WHERE a.Klub = skorer.Klub )About Sibudi
Ubuntu user | Loves books | Blogger | Web Developer | Learn PHP, JavaScript, Ruby & Python the hard way
03. August 2012 by Sibudi
Categories:
SQL | Tags: Catatan, MySQL, SQL | 3 comments
Panduan ini memberikan gambaran singkat pada pembaca terkait operasi atau query umum yang digunakan untuk mengekstrak data pada database relasional. Hal yang akan dipelajari antara lain:
- Mengakses SQL dari Microsoft Access
- Memilih kolom dari sebuah tabel
- Melakukan filter pada data
- Melakukan operasi untuk membentuk kolom baru
- Menghitung nilai aggregat suatu variabel dan mengurutkan nilai tersebut
- Menggabungkan dua buah tabel data
- Query lainnya
Pada Chapter 4, kita akan menggunakan skema database relasional yang ditampilkan pada Gambar 1.2.
Mengakses SQL dari Microsoft Access
Untuk melakukan query menggunakan SQL jalankan langkah berikut:
- Pada bagian Ribbon klik Tab Create
- Klik Query Design
- Tutup jendela Show Table yang muncul setelahnya
- Pada Ribbon Design klik SQL View
- Pada jendela query yang muncul, pembaca dapat mengetikkan query yang diinginkan.
- Setelah query diinputkan, klik Run
- Proses tersebut akan menghasilkan tabel data sesuai dengan query yang diinputkan. Untuk mengedit kembali query yang diinputkan, klik View dan pilih SQL View
- Untuk menyimpan query tekan ctrl+s (untuk windows) atau command+s (untuk macOSX).
Gambar 4.1: tahapan melakukan query menggunakan SQL.
Memilih Kolom dari Sebuah Tabel
Untuk memilih kolom pada sebuah tabel, kita dapat menggunakan perintah SELECT untuk menentukan nama kolom yang akan diambil dan FROM untuk menentukan tabel yang akan diambil kolomnya. Secara sederhana proses tersebut ditampilkan pada Gambar 4.2.
Gambar 4.2: Format memilih kolom dalam sebuah tabel.
Contoh 4.1 (Memilih kolom pada tabel Barang) Lakukan proses pengambilan data id_barang, nama, dan varian pada tabel Barang !
query:
SELECT id_barang, nama, varian FROM Barang;
output:
Ma0 | Makaroni rasa-rasa | original |
Ma1 | Makaroni rasa-rasa | pedas |
dst… |
Contoh 4.2 (Memilih seluruh kolom pada tabel Barang) Lakukan proses pengambilan seluruh kolom pada tabel Barang!
query:
output:
Ma0 | Makaroni rasa-rasa | original | 8000 | 10000 |
Ma1 | Makaroni rasa-rasa | pedas | 80000 | 10000 |
dst… |
Catatan: tanda * merupakan klausa untuk memilih seluruh kolom dalam tabel
Memilih Nilai Unik Pada Tabel
Peritah SELECT DISTINCT digunakan untuk memperoleh nilai unik pada sebuah tabel. Format umum query yang digunakan ditampilkan pada Gambar 4.3.
Gambar 4.3: Format memilih nilai unik pada tabel.
Contoh 4.3 (Mencari jumlah pembeli yang telah melakukan pembelian) Hitung jumlah pembeli yang telah melakukan pembelian menggunakan tabel Pesanan!
Catatan: fungsi COUNT() digunakan untuk menghitung jumlah baris
query:
SELECT COUNT(*) AS Total FROM (SELECT DISTINCT id_pelanggan FROM Pesanan);
Catatan : klausa AS digunakan untuk memberikan alias (nama baru) pada nama tabel atau nama kolom
output:
50 |
Melakukan Filter pada Tabel
Terkadang tidak semua nilai kita inginkan untuk ada dalam data yang kita miliki. Filter terhadap data perlu dilakukan. Filter data dilakukan dengan menggunakan fungsi WHERE dengan menambahkan kondisi yang diinginkan pada data. Format proses filter data ditampilkan pada Gambar 4.4.
Gambar 4.4: Format operasi melakukan filter data.
Catatan : untuk jenis data berupa teks berikan tanda kurung pada nilainya dan untuk jenis data tanggal beri tanda “#” pada awal dan akhir karakternya
Operator Perbandingan
Operator perbandingan yang digunakan dalam SQL, antara lain:
- “>” : lebih besar dari
- “<” : lebih kecil dari
- “=” : sama dengan
- “>=” : lebih besar sama dengan
- “<=” : lebih kecil sama dengan
- “<>” : tidak sama dengan
Contoh 4.4 (Mencari data pesanan dengan jumlah pesanan produk lebih besar dari 3) Hitung jumlah pesanan dengan jumlah pesanan (qty) > 3!
query:
SELECT COUNT(qty) AS Total FROM Pesanan WHERE qty > 3;
output:
0 |
Operator AND, OR dan NOT
Klausa WHERE dapat dikombinasikan pula dengan operator AND, OR, dan NOT. Operator AND dan OR digunakan untuk melakukan filter observasi berdasarkan satu atau dua kondisi :
- Operator AND menampilkan baris jika dua buah kondisi yang dibatasi oleh AND bernilai benar.
- Operator OR menampilkan baris jika salah satu dari dua kondisi yang dibatasi oleh OR bernilai benar.
Operator NOT digunakan untuk menampilkan baris jika satu kondisi bernilai tidak benar.
Contoh 4.5 (Mencari jumlah pesanan produk dengan kode barang tertentu) Hitung jumlah pesanan dengan jumlah pesanan (qty) >= 2 dan jenis barang yang dipesan adalah makaroni rasa-rasa dengan varian original (Ma0)!
query:
SELECT COUNT(*) FROM (SELECT id_barang, qty FROM Pesanan) WHERE qty >=2 AND id_barang = "Ma0";
output:
5166 |
Melakukan Filter Karakter
Filter karakter dapat dilakukan dengan menggunakan opertor LIKE + pola teks yang dicari. Pola teks yang digunakan biasanya akan ditulis bersamaan dengan wildcard characters yang ditunjukkan pada Tabel 4.1.
Tabel 4.1: Wildcard Characters yang ada pada MS Access.* | 0 atau lebih karakter | bl* untuk mencari kata bl, black, blue, dan blob |
? | sebuah karakter tunggal | h?t untuk mencri kata hot, hat, dan hit |
[] | karakter tunggal dalam kurung | h[oa]t untuk mencari kata hot dan hat, dan bukan hit |
! | karakter bukan dalam tanda kurung | h[!oa]t untuk mencari kata hit, dan bukan hot dan hat |
- | range karakter | c[a-b] untuk mencari kata cat dan cbt |
# | karakter numerik tunggal | 2#5 untuk mencari bilangan 205 s/d 295 |
Beberapa contoh penerapan wildcard character ditampilkan pada Tabel 4.2
Tabel 4.2: Contoh penggunaan wildcard.WHERE nama LIKE "a*" | cari nilai kolom nama yang dimulai dengan huruf a |
WHERE nama LIKE "*a" | cari nilai kolom nama yang diakhiri dengan huruf a |
WHERE nama LIKE "*an*" | cari nilai kolom nama yang mengandung kata an |
WHERE nama LIKE "?o*" | cari nilai kolom nama yang mengandung huruf o pada urutan kedua |
WHERE nama LIKE "a?*?*" | cari nilai kolom nama yang yang mengandung karakter a sebanyak 3 kali berurutan |
WHERE nama LIKE "a*o" | cari nilai kolom nama yang diawali dengan a dan diakhiri denga o |
Filter NULL Values
Nilai NULL merupakan sel pada kolom yang dibiarkan kosong pada proses pencatatan. Terdapat dua buah klausa yang digunakan untuk melakukan filter nilai NULL, yaitu: IS NOT NULL (filter baris yang tidak mengandung nilai NULL) dan IS NULL (filter baris yang mengandung nilai NULL). Berikut adalah contoh penerapan menggunakan klausa WHERE:
- WHERE email IS NOT NULL : lakukan filter pada kolom email untuk memperoleh observasi bukan NULL.
- WHERE email IS NULL : lakukan filter pada kolom email untuk memperoleh observasi bernilai NULL.
Operator IN
Operator IN memungkinkan kita untuk melakukan filter terhadap beberapa nilai. Format umum sintaks yang digunakan ditampilkan pada Gambar 4.5.
Gambar 4.5: Format operasi melakukan filter data pada beberapa nilai.
Contoh 4.6 (Mencari jumlah pesanan produk dengan kode barang tertentu 2) Hitung jumlah pesanan produk dengan kode barang “Ma0”, “Ma2”, dan “Ma4”!
query:
SELECT COUNT(id_pesanan) AS Total FROM Pesanan WHERE id_barang IN ("Ma0", "Ma2", "Ma4");
output:
82257 |
Operator BETWEEN
Operator BETWEEN digunakan untuk melakukan filter pada rentang nilai. Format umum sintaks ditampilkan pada Gambar 4.6.
Gambar 4.6: Format operasi melakukan filter data menggunakan rentang nilai.
Contoh 4.7 (Mencari jumlah pesanan produk pada rentang tanggal tertentu) Hitung jumlah pesanan produk pada tanggal 1/1/2019 sampai 2/2/2019! (format tanggal bulan/hari/tahun)
query:
SELECT COUNT(id_pesanan) AS Total FROM Pesanan WHERE tgl_pesan BETWEEN #1/1/2019# AND #2/2/2019#;
output:
12536 |
Melakukan Operasi Untuk Membentuk Kolom Baru
Untuk membentuk kolom baru pada data, operasi matematis (penjumlahan, pengurangan, transformsi, dll) dapat dilakukan pada SQL melalui baris fungsi SELECT. Kolom baru yang terbentuk selanjutnya dapat diberikan nama baru sesuai dengan kemauan pembaca menggunakan fungsi AS. Format operasi tersebut ditampilkan pada Gambar 4.7.
Gambar 4.7: format operasi untuk membentuk kolom baru.
Operator Matematika
Operator matematika yang digunakan dalam SQL antara lain:
- “+” : opertor penjumlahan
- “-” : operator pengurangan
- "*" : operator perkalian
- “/”" : operator pembagian
- “%” : mencari sisa hasil bagi bilangan pertama terhadap bilangan kedua
- “^” : operator pangkat
Contoh 4.8 (Menghitung keuntungan masing-masing produk) Lakukan pengambilan data id_barang, nama, varian dan lakukan pehitungan keuntungan dengan melakukan operasi pengurangan antara harga_jual-harga_beli dan beri nama keuntungan pada kolom baru tersebut!
query:
SELECT id_barang, nama, varian, harga_jual-harga_beli AS keuntungan FROM Barang;
output:
Ma0 | Makaroni rasa-rasa | original | 2000 |
Ma1 | Makaroni rasa-rasa | pedasa | 2000 |
dst… |
Fungsi
Fungsi-fungsi yang dapat digunakan dapat dilihat pada halaman <//www.w3schools.com/sql/sql_ref_msaccess.asp >
Contoh 4.9 (Memecah tanggal ke dalam kolm masing-masing) Lakukan operasi untuk memperoleh bulan dan tahun transaksi berlangsung!
query:
SELECT id_pesanan, id_pelanggan,id_barang, DATEPART(m, tgl_pesan) AS bulan, DATEPART(yyyy, tgl_pesan) AS tahun FROM Pesanan;
output:
1 | SBY37507 | Ma2 | 1 | 2019 |
2 | SBY37507 | Ma2 | 1 | 2019 |
dst… |
Menghitung Nilai Aggregat Suatu Variabel dan Mengurutkan Nilainya
Pehitungan nilai aggregat berguna jika kita ingin mengetahui nilai statistik dari sejumlah kelompok data, seperti: menghitung jumlah transaksi yang dilakukan masing-masing pelanggan. Agar dapat melakukannya data perlu dikelompokkan terlebih dahulu berdasarkan variabel pengelompok. Fungsi yang digunakan untuk melakukannya adalah fungsi GROUP BY. Hasil yang diperoleh selanjutnya dapat diurutkan nilainnya menggunakan fungsi ORDER BY. Format perhitungan nilai aggregat data ditampilkan pada Gambar 4.8
Gambar 4.8: format operasi untuk membentuk aggregat data.
Fungsi-fungsi yang dapat digunakan untuk memperoleh aggregat nilai antara lain:
- COUNT() : menghitung jumlah observasi
- SUM() : menghitung total nilai suatu kolom
- AVG() : mencari nilai rata-rata suatu kolom
- MIN() dan MAX() : mencari nilai minimum dan maksimum suatu kolom
Contoh 4.10 (Menghitung jumlah pembelian suatu konsumen terhadap sebuah produk) Lakukan perhitungan untuk memperoleh nilai total pembelian konsumen terhadap produk makaroni rasa-rasa original (id_barang = “Ma0”) dan tentutan konsumen mana yang melakukan total pembelian tertinggi!
query:
SELECT id_pembeli, id_barang, SUM(qty) AS jumlah_pembelian FROM Pesanan WHERE id_barang = "Ma0" GROUP BY id_pembeli, id_barang ORDER BY SUM(qty) DESC;
output:
MDN36326 | Ma0 | 738 |
SBY99754 | Ma0 | 715 |
dst.. |
Menggabungkan Dua Buah Tabel Data
Menggabungkan dua buah tabel data berdasarkan kolom primary key pada tabel pertama dan kolom foreign key pada tabel kedua merupakan operasi yang sering dilakukan pada database. SUatu tabel sering-kali membutuhkan informasi lain untuk memudahkan kita membacanya (contoh: mengabungkan tabel 1 dan tabel 2 untuk memperoleh informasi nama produk yang ada pada tabel 2 menggunakan kolom kunci yang ada pada kedua tabel). Format umum proses penggabungan tabel ditampilkan pada gambar berikut:
Gambar 4.9: format menggabungkan tabel melalui inner join.
Terdapat beberapa jenis join yang ada pada SQL, antara lain:
- INNER JOIN : melakukan join hanya pada observasi dengan elemen kunci yang sama-sama ada pada kedua tabel.
- LEFT JOIN : menggabungkan seluruh baris pada tabel kiri dan sebagian baris pada tabel kanan yang elemen kuncinya cocok dengan tabel kiri
- RIGHT JOIN : kebalikan dari LEFT JOIN
- FULL JOIN : menggabungkan seluruh observasi pada kedua tabel melalui kolom elemen kunci.
Visualisasi proses join dapat dilihat pada gambar berikut:
Gambar 4.10: visualisasi variasi join pada SQL.
Contoh 4.11 (Menggabungkan tabel barang dan pesanan) Gabungkan tabel barang dan pesanan menggunakan elemen kunci id_barang dan pada hasil join hanya tampilkan kolom id_barang, nama, varian, dan tgl_pesan!
query:
SELECT Barang.id_barang, Barang.nama, Barang.varian, Pesanan.tgl_pesan FROM Barang INNER JOIN Pesanan ON Pesanan.id_barang = Barang.id_barang;
output:
Ma0 | Makaroni rasa-rasa | original |
Ma0 | Makaroni rasa-rasa | original |
dst.. |
Query Lainnya
Menghitung Usia Konsumen
Buatlah sebuah query untuk menghitung usia konsumen! (gunakan fungsi DATE() untuk memperoleh tanggal hari ini dan fungsi DATEDIFF() untuk menghitung selisih tanggal)
query:
SELECT Pembeli.id_pembeli, Pembeli.nama, Min(Pesanan.tgl_pesan) AS tgl_beli_pertama, Max(Pesanan.tgl_pesan) AS tgl_beli_terakhir FROM Pembeli INNER JOIN Pesanan ON Pembeli.id_pembeli = Pesanan.id_pembeli GROUP BY Pembeli.id_pembeli, Pembeli.nama;
output:
BDG15240 | jesika | P | Bandung | 27 |
BDG16736 | desi | P | Bandung | 38 |
dst.. |
Mencari Tanggal Pembelian Pertama dan Terakhir Konsumen
Buatlah sebuah query yang dapat digunakan untuk menentukan tanggal transaksi pertama dan terakhir konsumen!
query:
SELECT Pembeli.id_pembeli, Pembeli.nama, Min(Pesanan.tgl_pesan) AS tgl_beli_pertama, Max(Pesanan.tgl_pesan) AS tgl_beli_terakhir FROM Pembeli INNER JOIN Pesanan ON Pembeli.id_pembeli = Pesanan.id_pembeli GROUP BY Pembeli.id_pembeli, Pembeli.nama;
output:
BDG15240 | jesica | 1/1/2019 | 12/31/2019 |
BDG16736 | desi | 1/1/2019 | 12/31/2019 |
dst.. |
Menghitung Penjualan Bulanan Masing-Masing Produk
Buatlah sebuah query untuk menghitung total penjualan masing-masing produk tiap bulan! (gunakan fungsi DATEPART() untuk memisahkan hari, bulan, dan tahun)
query:
SELECT DATEPART(m, Pesanan.tgl_pesan) AS bulan, DATEPART(yyyy, Pesanan.tgl_pesan) AS tahun, Pesanan.id_barang, Barang.nama, Barang.varian, Sum(Pesanan.qty) AS penjualan FROM Barang INNER JOIN Pesanan ON Barang.id_barang = Pesanan.id_barang GROUP BY Pesanan.id_barang, Barang.nama, Barang.varian, DATEPART(m, Pesanan.tgl_pesan), DATEPART(yyyy, Pesanan.tgl_pesan) ORDER BY DATEPART(yyyy, Pesanan.tgl_pesan) DESC , DATEPART(m, Pesanan.tgl_pesan);
output:
1 | 2019 | Ma0 | Makaroni rasa-rasa | original | 2728 |
1 | 2019 | Ma1 | Makaroni rasa-rasa | pedas | 2763 |
dst.. |
Menghitung Jumlah Transaksi Setiap Konsumen
Buatlah sebuah query untuk menghitung jumlah transaksi masing-masing konsumen! (gunakan fungsi DISTICT untuk memperoleh elemen unik pada tiap tgl_pesan)
query:
SELECT Pesanan.id_pembeli, Pembeli.nama, COUNT(Pesanan.tgl_pesan) AS jumlah_transaksi FROM (SELECT DISTINCT tgl_pesan,id_pelanggan FROM Pesanan) INNER JOIN Pembeli ON Pembeli.id_pembeli = Pesanan.id_pelanggan GROUP BY Pesanan.id_pelanggan, Pembeli.nama ORDER BY COUNT(Pesanan.tgl_pesan) DESC;
output:
DPS55607 | handoko | 320 |
JKT92062 | rosidi | 319 |
dst.. |
Apa urutan perintah SQL yang benar?
Apa saja 3 jenis SQL?
Apa itu group by SQL?
Apa saja perintah DML?
Ringkasan: Dalam tutorial ini, Anda akan belajar cara menggunakan pernyataan SQL Server SELECT TOP untuk membatasi baris yang dikembalikan oleh kueri.: in this tutorial, you will learn how to use the SQL Server SELECT TOP statement to limit the rows returned by a query.
Pengantar SQL Server SELECT TOP
Klausul SELECT TOP memungkinkan Anda untuk membatasi jumlah baris atau persentase baris yang dikembalikan dalam set hasil kueri.
Karena urutan baris yang disimpan dalam tabel tidak ditentukan, pernyataan SELECT TOP selalu digunakan bersama dengan klausa ORDER BY. Oleh karena itu, set hasil terbatas pada jumlah pertama baris yang dipesan.
Berikut ini menunjukkan sintaks dari klausa
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)0 dengan pernyataanSELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)1:SELECT TOP (expression) [PERCENT] [WITH TIES] FROM table_name ORDER BY column_name;
Code language: SQL (Structured Query Language) (sql)Dalam sintaks ini, pernyataan
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)1 dapat memiliki klausa lain sepertiSELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)3,SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)4,SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)5, danSELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)6.SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)7Mengikuti kata kunci
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)0 adalah ekspresi yang menentukan jumlah baris yang akan dikembalikan. Ekspresi dievaluasi ke nilai float jikaSELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)9 digunakan, jika tidak, itu dikonversi ke nilaiSELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)0.SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)9Kata kunci
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)9 menunjukkan bahwa kueri mengembalikan N persentase pertama dari baris, di mana N adalah hasil dariSELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)7.SELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)6SELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)6 memungkinkan Anda untuk mengembalikan lebih banyak baris dengan nilai yang cocok dengan baris terakhir dalam set hasil terbatas. Perhatikan bahwaSELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)6 dapat menyebabkan lebih banyak baris dikembalikan daripada yang Anda tentukan dalam ekspresi.Misalnya, jika Anda ingin mengembalikan produk paling mahal, Anda dapat menggunakan
SELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)9. Namun, jika dua atau lebih produk memiliki harga yang sama dengan produk paling mahal, maka Anda melewatkan produk termahal lainnya dalam hasil yang ditetapkan.Untuk menghindari ini, Anda dapat menggunakan
SELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)0. Ini akan mencakup tidak hanya produk mahal pertama tetapi juga yang kedua, dan seterusnya.Kami akan menggunakan tabel
SELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)1 dalam database sampel untuk demonstrasi.1) Menggunakan
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)0 dengan nilai konstanContoh berikut menggunakan nilai konstan untuk mengembalikan 10 produk termahal teratas.
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)Inilah hasilnya:
2) Menggunakan
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)0 untuk mengembalikan persentase barisContoh berikut menggunakan
SELECT TOP 10 product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)9 untuk menentukan jumlah produk yang dikembalikan dalam set hasil. TabelSELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)1 memiliki barisSELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)6, oleh karena itu, satu persen dariSELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)6 adalah nilai fraksi (SELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)8), SQL Server membulatkannya ke seluruh nomor berikutnya yang empat (SELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)9) dalam kasus ini.SELECT TOP 1 PERCENT product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)Outputnya adalah:
3) Menggunakan SELECT TOP0 untuk memasukkan baris yang sesuai dengan nilai di baris terakhir
Pernyataan berikut mengembalikan tiga produk termahal teratas:
SELECT TOP 3 WITH TIES product_name, list_price FROM production.products ORDER BY list_price DESC;
Code language: SQL (Structured Query Language) (sql)Outputnya adalah sebagai berikut:
Dalam contoh ini, produk mahal ketiga memiliki daftar harga SELECT TOP1. Karena pernyataan yang digunakan SELECT TOP0, ia mengembalikan tiga produk lagi yang harga daftarnya sama dengan yang ketiga.
Dalam tutorial ini, Anda telah belajar cara menggunakan pernyataan SQL Server SELECT TOP untuk membatasi jumlah baris atau persentase baris yang dikembalikan oleh kueri.