Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpDbAgg 265 of 322 menu
◀ ▶

Сводные функции SQL в SQLite

Агрегаты сжимают множество строк в одно значение. COUNT считает строки, SUM складывает числа, MIN и MAX берут крайние значения столбца.

Несколько функций можно запросить в одном SELECT с псевдонимами для чтения из ResultSet:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { try (Connection connection = DriverManager.getConnection("jdbc:sqlite:stats.db")) { try (Statement statement = connection.createStatement()) { statement.execute(""" CREATE TABLE IF NOT EXISTS loads ( id INTEGER PRIMARY KEY, kg INTEGER NOT NULL ) """); statement.executeUpdate( "INSERT INTO loads (kg) VALUES (10)" ); statement.executeUpdate( "INSERT INTO loads (kg) VALUES (25)" ); statement.executeUpdate( "INSERT INTO loads (kg) VALUES (15)" ); ResultSet result = statement.executeQuery( """ SELECT COUNT(*) AS cnt, SUM(kg) AS total, MIN(kg) AS light, MAX(kg) AS heavy FROM loads """ ); if (result.next()) { System.out.println(result.getInt("cnt")); System.out.println(result.getInt("total")); System.out.println(result.getInt("light")); System.out.println(result.getInt("heavy")); } } } } } }

Запись COUNT(*) не смотрит на NULL в отдельных полях - считаются строки целиком. Для пустой таблицы агрегаты всё равно вернут одну строку результата:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class Main { public static void main(String[] args) throws Exception { try (Connection connection = DriverManager.getConnection("jdbc:sqlite:stats.db")) { try (Statement statement = connection.createStatement(); ResultSet result = statement.executeQuery( "SELECT COUNT(*) AS cnt FROM loads", )) { if (result.next()) { System.out.println(result.getInt("cnt")); } } } } }

Создайте таблицу fees в club.db с полем amount, добавьте четыре суммы и выведите число строк, сумму, минимум и максимум.

Добавьте условие WHERE amount >= ? с порогом 50 и выведите SUM только по подходящим строкам.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить