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

Смешанные задачи по базе в Rust

В этих задачах смешаем чтение, связь таблиц и запись в одном сценарии. Данные заданы в блоке без готового текста запросов.

Дана таблица:

let setup = r#" CREATE TABLE bins ( id INTEGER PRIMARY KEY, sku TEXT NOT NULL, qty INTEGER NOT NULL ); INSERT INTO bins (sku, qty) VALUES ('wire', 4); INSERT INTO bins (sku, qty) VALUES ('tape', 1); "#;

Вставьте "bolt" с qty 10, затем выведите sku с наибольшим qty.

Даны таблицы:

let setup = r#" CREATE TABLE teams ( id INTEGER PRIMARY KEY, name TEXT NOT NULL ); CREATE TABLE members ( id INTEGER PRIMARY KEY, team_id INTEGER NOT NULL, nick TEXT NOT NULL, FOREIGN KEY (team_id) REFERENCES teams (id) ); INSERT INTO teams (name) VALUES ('alpha'); INSERT INTO members (team_id, nick) VALUES (1, 'ann'); INSERT INTO members (team_id, nick) VALUES (1, 'bob'); "#;

Выведите название команды и псевдоним каждого участника. Затем вставьте участника "kim" в "alpha" и снова выведите COUNT(*) в members.

Даны таблицы:

let setup = r#" CREATE TABLE projects ( id INTEGER PRIMARY KEY, title TEXT NOT NULL ); CREATE TABLE tasks ( id INTEGER PRIMARY KEY, project_id INTEGER NOT NULL, label TEXT NOT NULL, done INTEGER NOT NULL, FOREIGN KEY (project_id) REFERENCES projects (id) ); INSERT INTO projects (title) VALUES ('site'); INSERT INTO tasks (project_id, label, done) VALUES (1, 'layout', 1); INSERT INTO tasks (project_id, label, done) VALUES (1, 'forms', 0); "#;

Выведите заголовок проекта и подпись каждой задачи, где done равно 0. Затем отметьте "forms" выполненной и выведите COUNT(*) невыполненных задач проекта.

Даны таблицы:

let setup = r#" CREATE TABLE carriers ( id INTEGER PRIMARY KEY, code TEXT NOT NULL ); CREATE TABLE parcels ( id INTEGER PRIMARY KEY, carrier_id INTEGER NOT NULL, weight REAL NOT NULL, FOREIGN KEY (carrier_id) REFERENCES carriers (id) ); INSERT INTO carriers (code) VALUES ('fast'); INSERT INTO carriers (code) VALUES ('slow'); INSERT INTO parcels (carrier_id, weight) VALUES (1, 2.5); INSERT INTO parcels (carrier_id, weight) VALUES (1, 1); INSERT INTO parcels (carrier_id, weight) VALUES (2, 4); "#;

Для каждого кода перевозчика выведите сумму weight после связи таблиц и группировки.

Дана таблица:

let setup = r#" CREATE TABLE sessions ( id INTEGER PRIMARY KEY, user_name TEXT NOT NULL, minutes INTEGER NOT NULL ); INSERT INTO sessions (user_name, minutes) VALUES ('ann', 20); INSERT INTO sessions (user_name, minutes) VALUES ('ann', 15); INSERT INTO sessions (user_name, minutes) VALUES ('bob', 10); "#;

Удалите строки "bob", вставьте для "ann" еще 5 минут и выведите сумму minutes для "ann".

Даны таблицы:

let setup = r#" CREATE TABLE labs ( id INTEGER PRIMARY KEY, room TEXT NOT NULL ); CREATE TABLE samples ( id INTEGER PRIMARY KEY, lab_id INTEGER NOT NULL, tag TEXT NOT NULL, FOREIGN KEY (lab_id) REFERENCES labs (id) ); INSERT INTO labs (room) VALUES ('101'); INSERT INTO labs (room) VALUES ('102'); INSERT INTO samples (lab_id, tag) VALUES (1, 'a1'); "#;

Выведите комнату и метку каждого образца. Для комнаты "102" покажите "none", если образца нет. Оставь строку слева, даже если справа пусто.

Дана таблица:

let setup = r#" CREATE TABLE prices ( id INTEGER PRIMARY KEY, item TEXT NOT NULL, cost REAL NOT NULL ); INSERT INTO prices (item, cost) VALUES ('milk', 1.2); INSERT INTO prices (item, cost) VALUES ('bread', 0.9); "#;

Поднимите cost для "milk" на 0.1, вставьте "eggs" с 2.5 и выведите среднее cost по таблице.

Даны таблицы:

let setup = r#" CREATE TABLE dept ( id INTEGER PRIMARY KEY, title TEXT NOT NULL ); CREATE TABLE emp ( id INTEGER PRIMARY KEY, dept_id INTEGER NOT NULL, name TEXT NOT NULL, FOREIGN KEY (dept_id) REFERENCES dept (id) ); INSERT INTO dept (title) VALUES ('sales'); INSERT INTO emp (dept_id, name) VALUES (1, 'ann'); "#;

Вставьте отдел "it" и сотрудника "bob" в него. Выведите название отдела и имя каждого сотрудника после сборки двух таблиц.

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