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

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

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

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

import 'package:sqlite3/sqlite3.dart'; var db = sqlite3.open('grouped.db'); db.execute(''' CREATE TABLE IF NOT EXISTS parcels ( id INTEGER PRIMARY KEY, zone TEXT NOT NULL, units INTEGER NOT NULL ) '''); db.execute( "INSERT INTO parcels (zone, units) VALUES ('A', 3)", ); db.execute( "INSERT INTO parcels (zone, units) VALUES ('A', 5)", ); db.execute( "INSERT INTO parcels (zone, units) VALUES ('B', 2)", ); var rows = db.select(''' SELECT zone, SUM(units) AS total FROM parcels GROUP BY zone ORDER BY zone '''); for (var row in rows) { print(row['zone']); print(row['total']); } db.dispose();

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

import 'package:sqlite3/sqlite3.dart'; var db = sqlite3.open('grouped.db'); var rows = db.select(''' SELECT zone, SUM(units) AS total FROM parcels GROUP BY zone HAVING total >= 5 '''); for (var row in rows) { print(row['zone']); } db.dispose();

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

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

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