Фильтры в базе в Rust
В этих задачах потренируем отбор строк, сортировку и ограничение числа строк в результате. Таблицы заданы в блоке данных без готового текста запроса.
Дана таблица:
let setup = r#"
CREATE TABLE meters (
id INTEGER PRIMARY KEY,
zone TEXT NOT NULL,
reading REAL NOT NULL
);
INSERT INTO meters (zone, reading) VALUES ('a', 10.2);
INSERT INTO meters (zone, reading) VALUES ('a', 18.5);
INSERT INTO meters (zone, reading) VALUES ('b', 7);
"#;
Выведите zone и reading,
где reading больше 15.
Дана таблица:
let setup = r#"
CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
pages INTEGER NOT NULL
);
INSERT INTO books (title, pages) VALUES ('go intro', 120);
INSERT INTO books (title, pages) VALUES ('sql basics', 90);
INSERT INTO books (title, pages) VALUES ('go tips', 200);
"#;
Выведите title, где pages
не меньше 100 и не больше
150.
Дана таблица:
let setup = r#"
CREATE TABLE tags (
id INTEGER PRIMARY KEY,
code TEXT NOT NULL
);
INSERT INTO tags (code) VALUES ('red');
INSERT INTO tags (code) VALUES ('blue');
INSERT INTO tags (code) VALUES ('green');
INSERT INTO tags (code) VALUES ('black');
"#;
Выведите code только для
"red", "blue" и
"green" через список значений
в условии.
Дана таблица:
let setup = r#"
CREATE TABLE cities (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
pop INTEGER NOT NULL
);
INSERT INTO cities (name, pop) VALUES ('oslo', 700000);
INSERT INTO cities (name, pop) VALUES ('bergen', 280000);
INSERT INTO cities (name, pop) VALUES ('trondheim', 210000);
"#;
Выведите имена городов по убыванию
pop.
Дана таблица:
let setup = r#"
CREATE TABLE files (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
INSERT INTO files (name) VALUES ('report.txt');
INSERT INTO files (name) VALUES ('photo.jpg');
INSERT INTO files (name) VALUES ('data.csv');
INSERT INTO files (name) VALUES ('notes.md');
"#;
Выведите name, где имя
заканчивается на ".txt"
или на ".csv".
Дана таблица:
let setup = r#"
CREATE TABLE shifts (
id INTEGER PRIMARY KEY,
worker TEXT NOT NULL,
hours INTEGER NOT NULL
);
INSERT INTO shifts (worker, hours) VALUES ('ann', 8);
INSERT INTO shifts (worker, hours) VALUES ('bob', 4);
INSERT INTO shifts (worker, hours) VALUES ('kim', 6);
"#;
Выведите worker, где hours
не равно 8.
Дана таблица:
let setup = r#"
CREATE TABLE events (
id INTEGER PRIMARY KEY,
kind TEXT NOT NULL,
priority INTEGER NOT NULL
);
INSERT INTO events (kind, priority) VALUES ('error', 3);
INSERT INTO events (kind, priority) VALUES ('info', 1);
INSERT INTO events (kind, priority) VALUES ('warn', 2);
INSERT INTO events (kind, priority) VALUES ('debug', 1);
"#;
Выведите kind, где priority
выше 1 и kind не
"debug". Параметры передайте
через знак вопроса.
Дана таблица:
let setup = r#"
CREATE TABLE ranks (
id INTEGER PRIMARY KEY,
nick TEXT NOT NULL,
score INTEGER NOT NULL
);
INSERT INTO ranks (nick, score) VALUES ('ann', 90);
INSERT INTO ranks (nick, score) VALUES ('bob', 70);
INSERT INTO ranks (nick, score) VALUES ('kim', 85);
INSERT INTO ranks (nick, score) VALUES ('leo', 60);
"#;
Выведите nick трех лучших
по score при сортировке
по убыванию.