Apache Derby - Memiliki Klausul
Klausa HAVING memungkinkan Anda untuk menentukan kondisi yang memfilter hasil grup mana yang muncul dalam hasil.
Klausa WHERE menempatkan kondisi pada kolom yang dipilih, sedangkan klausa HAVING menempatkan kondisi pada grup yang dibuat oleh klausa GROUP BY.
Sintaksis
Berikut ini adalah sintaks dari klausa HAVING -
ij> SELECT column1, column2 . . . from table_name GROUP BY column having
condition;
Contoh
Misalkan, kami memiliki tabel bernama Karyawan di database dengan 13 catatan seperti yang ditunjukkan di bawah ini -
ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Kalyan |40000 |Vishakhapatnam
4 |Renuka |50000 |Hyderabad
5 |Archana |15000 |Vishakhapatnam
6 |Krishna |40000 |Hyderabad
7 |Trupthi |45000 |Vishakhapatnam
8 |Raghav |12000 |Lucknow
9 |Radha |50000 |Delhi
10 |Anirudh |15000 |Mumbai
11 |Tara |45000 |Kochin
12 |Sucharita |44000 |Kochin
13 |Rizwan |20000 |Lucknow
Kueri berikut menampilkan gaji maksimum karyawan di lokasi yang memiliki setidaknya 3 karyawan -
ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having
count(Location)>=3;
Ini menghasilkan keluaran berikut -
LOCATION |2
------------------------------------------------------------
Hyderabad |50000
Lucknow |39000
Vishakhapatnam |45000
3 rows selected
Menyortir Data menggunakan program JDBC
Bagian ini mengajarkan Anda cara menggunakan Having a clause di database Apache Derby menggunakan aplikasi JDBC.
Jika Anda ingin meminta server jaringan Derby menggunakan klien jaringan, pastikan bahwa server aktif dan berjalan. Nama kelas untuk driver klien Jaringan adalah org.apache.derby.jdbc.ClientDriver dan URL-nya adalah jdbc: derby: // localhost: 1527 /DATABASE_NAME;buat = benar; pengguna =USER_NAME;passw ord =PASSWORD"
Ikuti langkah-langkah yang diberikan di bawah ini untuk mengurutkan record dari tabel di Apache Derby
Langkah 1: Daftarkan driver
Untuk berkomunikasi dengan database, pertama-tama, Anda perlu mendaftarkan driver. ItuforName() metode kelas Classmenerima nilai String yang mewakili nama kelas, dan memuatnya ke memori, yang secara otomatis mendaftarkannya. Daftarkan driver menggunakan metode ini.
Langkah 2: Dapatkan koneksi
Secara umum, langkah pertama yang kita lakukan untuk berkomunikasi dengan database adalah menghubungkannya. ItuConnectionkelas mewakili koneksi fisik dengan server database. Anda dapat membuat objek koneksi dengan menjalankangetConnection() metode dari DriverManagerkelas. Buat koneksi menggunakan metode ini.
Langkah 3: Buat objek pernyataan
Anda perlu membuat file Statement atau PreparedStatement or, CallableStatementobjek untuk mengirim pernyataan SQL ke database. Anda dapat membuatnya menggunakan metodecreateStatement(), prepareStatement() and, prepareCall()masing-masing. Buat salah satu dari objek ini menggunakan metode yang sesuai.
Langkah 4: Jalankan kueri
Setelah membuat pernyataan, Anda perlu menjalankannya. ItuStatement kelas menyediakan berbagai metode untuk mengeksekusi kueri seperti execute()metode untuk mengeksekusi pernyataan yang mengembalikan lebih dari satu kumpulan hasil. ItuexecuteUpdate()metode mengeksekusi query seperti INSERT, UPDATE, DELETE. ItuexecuteQuery()metode mengembalikan data. Gunakan salah satu dari metode ini dan jalankan pernyataan yang dibuat sebelumnya.
Contoh
Mengikuti contoh JDBC mendemonstrasikan bagaimana menggunakan klausa Group By dan melakukan operasi CURD pada tabel di Apache Derby menggunakan program JDBC. Di sini, kami menghubungkan ke database bernama sampleDB (akan dibuat jika tidak ada) menggunakan driver tertanam.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class HavingClauseExample {
public static void main(String args[]) throws Exception {
//Registering the driver
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
//Getting the Connection object
String URL = "jdbc:derby:sampleDB;create=true";
Connection conn = DriverManager.getConnection(URL);
//Creating the Statement object
Statement stmt = conn.createStatement();
//Creating a table and populating it
stmt.execute("CREATE TABLE EmployeesData( "
+ "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
+ "Name VARCHAR(255), "
+ "Salary INT NOT NULL, "
+ "Location VARCHAR(255), "
+ "PRIMARY KEY (Id))");
stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
+ "VALUES ('Amit', 30000, 'Hyderabad'), "
+ "('Rahul', 39000, 'Lucknow'), "
+ "('Renuka', 50000, 'Hyderabad'), "
+ "('Archana', 15000, 'Vishakhapatnam'), "
+ "('Kalyan', 40000, 'Hyderabad'), "
+ "('Trupthi', 45000, 'Vishakhapatnam'), "
+ "('Raghav', 12000, 'Lucknow'), "
+ "('Suchatra', 33000, 'Vishakhapatnam'), "
+ "('Rizwan', 20000, 'Lucknow')");
//Executing the query
String query = "SELECT Location, MAX(Salary) "
+ "from EmployeesData GROUP BY Location having "
+ "count(Location)>=3";
ResultSet rs = stmt.executeQuery(query);
while(rs.next()) {
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(" ");
}
}
}
Keluaran
Saat menjalankan program di atas, Anda akan mendapatkan output berikut -
Hyderabad
50000
Lucknow
39000
Vishakhapatnam
45000