Apache Derby - Klausel haben

Mit der HAVING-Klausel können Sie Bedingungen angeben, die filtern, welche Gruppenergebnisse in den Ergebnissen angezeigt werden.

Mit der WHERE-Klausel werden Bedingungen für die ausgewählten Spalten festgelegt, während mit der HAVING-Klausel Bedingungen für Gruppen festgelegt werden, die mit der GROUP BY-Klausel erstellt wurden.

Syntax

Es folgt die Syntax der HAVING-Klausel -

ij> SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen Employees in der Datenbank mit den 13 unten aufgeführten Datensätzen.

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

Die folgende Abfrage zeigt die maximalen Gehälter der Mitarbeiter am Standort an, die mindestens 3 Mitarbeiter haben -

ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having
count(Location)>=3;

Dies erzeugt die folgende Ausgabe -

LOCATION |2
------------------------------------------------------------
Hyderabad |50000
Lucknow |39000
Vishakhapatnam |45000
3 rows selected

Sortieren von Daten mit dem JDBC-Programm

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der JDBC-Anwendung eine Klausel in der Apache Derby-Datenbank verwenden.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um die Datensätze einer Tabelle in Apache Derby zu sortieren

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse Classakzeptiert einen String-Wert, der einen Klassennamen darstellt, und lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement or, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery()Methode gibt Daten zurück. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie die Group By-Klausel verwendet und CURD-Operationen für eine Tabelle in Apache Derby mithilfe des JDBC-Programms ausgeführt werden. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000