Skip to content

Instantly share code, notes, and snippets.

@ingvar
Created August 10, 2020 08:44
Show Gist options
  • Save ingvar/603359bbce8bc5e9876762b1761b92bb to your computer and use it in GitHub Desktop.
Save ingvar/603359bbce8bc5e9876762b1761b92bb to your computer and use it in GitHub Desktop.
Swivl SQL test
Возможно синтаксис структур и вставок не соответствует СУБД, с которой Вы
работаете, но общий смысл должен быть ясен. В каждом пункте ответ необходимо
предоставить в виде одного запроса к СУБД MySQL.
1. Написать SQL-запросы:
a. Вернуть название фирмы и ее телефон. В результате должны быть представлены
все фирмы по одному разу. Если у фирмы нет телефона, нужно вернуть пробел или
прочерк. Если у фирмы несколько телефонов, нужно вернуть любой из них.
b. Вернуть все фирмы, не имеющие телефонов.
c. Вернуть все фирмы, имеющие не менее 2-х телефонов.
d. Вернуть все фирмы, имеющие менее 2-х телефонов.
e. Вернуть фирму, имеющую максимальное кол-во телефонов.
Исходные данные #1:
CREATE TABLE `firm` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT firm (id, name) VALUES (1, 'Sony');
INSERT firm (id, name) VALUES (2, 'Panasonic');
INSERT firm (id, name) VALUES (3, 'Samsung');
CREATE TABLE `phone`
(
`id` int NOT NULL AUTO_INCREMENT,
`firm_id` int not null,
`phone` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT phone (id, firm_id, phone) VALUES (1, 1, '332-55-56');
INSERT phone (id, firm_id, phone) VALUES (2, 1, '332-30-01');
INSERT phone (id, firm_id, phone) VALUES (3, 2, '256-49-16');
Для представленного примера в пункте А запрос должен вернуть:
Name Phone
Sony 332-55-56
Panasonic 256-39-12
Samsung
Исходные данные #2:
CREATE TABLE `company` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `goods` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `shipment`
(
`id` int NOT NULL AUTO_INCREMENT,
`company_id` int not null,
`good_id` int not null,
`quantity` float not null,
`shipdate` datetime not null,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT company (id, name) VALUES (1, 'Intel');
INSERT company (id, name) VALUES (2, 'IBM');
INSERT company (id, name) VALUES (3, 'Compaq');
INSERT goods (id, name) VALUES (1, 'Pentium IIV');
INSERT goods (id, name) VALUES (2, 'IBM server');
INSERT goods (id, name) VALUES (3, 'Compaq Presario');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (1, 1, 1, 100, '11.04.2020');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (2, 1, 1, 200, '11.07.2020');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (3, 1, 2, 300, '12.02.2020');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (4, 1, 2, 400, '10.05.2020');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (5, 2, 1, 100, '10.29.2019');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (6, 2, 1, 200, '11.06.2019');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (7, 2, 2, 300, '12.12.2019');
INSERT shipment (id, company_id, good_id, quantity, shipdate) VALUES (8, 2, 2, 700, '12.03.2019');
Для таблиц с данными o компаниях, товарах и поставках вернуть следующие данные:
a. Вывести общий объем поставок каждого из продуктов для каждой фирмы с указанием
даты последней поставки
b. Аналогично предыдущему пункту, но за последние 30 дней. Если поставки
какого-либо из товаров для компании в этот период отсутствовали, вывести в
столбце объема 'No data'
SQL запросы необходимо выложить на https://gist.github.com.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment