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

Группировка строк в SQL

Конструкция GROUP BY собирает строки с одинаковым значением колонки в одну группу. Агрегат считают отдельно для каждой такой группы.

Сумма по коду склада для нескольких партий:

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:grouped.db") .use { connection -> connection.createStatement().use { statement -> statement.execute( """ CREATE TABLE IF NOT EXISTS parcels ( id INTEGER PRIMARY KEY, zone TEXT NOT NULL, units INTEGER NOT NULL ) """ ) statement.executeUpdate( "INSERT INTO parcels (zone, units) VALUES ('A', 3)" ) statement.executeUpdate( "INSERT INTO parcels (zone, units) VALUES ('A', 5)" ) statement.executeUpdate( "INSERT INTO parcels (zone, units) VALUES ('B', 2)" ) val result = statement.executeQuery( """ SELECT zone, SUM(units) AS total FROM parcels GROUP BY zone ORDER BY zone """ ) while (result.next()) { println(result.getString("zone")) println(result.getInt("total")) } } } }

В списке SELECT без агрегата могут быть только поля из GROUP BY. Фильтр по итогу группы задают через HAVING, а не WHERE:

import java.sql.DriverManager fun main() { DriverManager.getConnection("jdbc:sqlite:grouped.db") .use { connection -> val result = connection.createStatement() .executeQuery( """ SELECT zone, SUM(units) AS total FROM parcels GROUP BY zone HAVING total >= 5 """ ) while (result.next()) { println(result.getString("zone")) } } }

Создайте таблицу pallets в wh.db с полями aisle и boxes, добавьте шесть строк и выведите сумму boxes для каждого aisle.

Оставьте только проходы, где сумма коробок не меньше 10, и выведите их коды.

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