-- Только значимые столбцы
CREATE TABLE exam_mark (ID INT IDENTITY, student_id INT, mark INT)
INSERT exam_mark (student_id, mark )
VALUES (4, 5), (4, 4), (4, 4), (4, 5), (4, 2),
(5, 5), (5, 5), (5, 4), (5, 3), (5, 5),
(6, 2), (6, 2), (6, 3), (6, 2), (6, 2),
(7, 3), (7, 3), (7, 3), (7, 3), (7, 3)
SELECT gd.*
FROM exam_mark AS gd
LEFT JOIN exam_mark AS bd ON bd.student_id = gd.student_id AND bd.mark = 2
-- у кого есть 4, 5 но нет 2
WHERE (gd.mark IN (4, 5)) AND (bd.student_id IS NULL) CREATE TABLE T (dt DATETIME, t FLOAT)
INSERT T VALUES ( '20060706 00:10', 24.0),
( '20060706 10:00', 25.0),
( '20060706 07:00', 21.0),
( '20060707 01:10', 7.0)
SELECT CONVERT(VARCHAR, dt, 104) AS [Дата],
T.t AS [Температура],
LEFT(CONVERT(VARCHAR, dt, 108),7) AS [Время]
FROM T
INNER JOIN ( SELECT CONVERT(VARCHAR, dt, 112) AS D, MAX(t) AS T
FROM T
GROUP BY CONVERT(VARCHAR, dt, 112)) AS MT
ON MT.D = CONVERT(VARCHAR, T.dt, 112) AND MT.T = T.t
ORDER BY dt [Провайдер] nvarchar(50) references [Провайдеры]([Название провайдера])
[Название тарифа] nvarchar(50) references [Тарифы всех провайдеров]([Название тарифа])CREATE TABLE [Клиент]
( id_client INT PRIMARY KEY,
[Фамилия] NVARCHAR(30) NOT NULL,
[Имя] NVARCHAR(20) NOT NULL,
[Отчество] NVARCHAR(20) NOT NULL,
[Паспорт] NVARCHAR(MAX) NOT NULL,
[Адрес] NVARCHAR(MAX) NULL )
CREATE TABLE [Провайдер]
( [Название] NVARCHAR(50) PRIMARY KEY,
[Название суб-провайдера] NVARCHAR(50) NULL,
[ФИО директора] NVARCHAR(100) NOT NULL,
[Телефон директора] CHAR(10) NOT NULL,
[ОКПО] CHAR(10) NOT NULL )
CREATE TABLE [Тариф]
( [Название] NVARCHAR(50) PRIMARY KEY,
[Скорость] INT NOT NULL,
[Стоимость] MONEY NOT NULL,
[Тип] NVARCHAR(50) NOT NULL CHECK ( [Тип] in
( 'Проводной/Лимитный',
'Проводной/безлимитный',
'Беспроводной/Лимитный',
'Беспроводной/Безлимитный' )))
CREATE TABLE [Провайдер Тарифа]
( [Название провайдера] NVARCHAR(50) REFERENCES [Провайдер] ([Название]),
[Название тарифа] NVARCHAR(50) REFERENCES [Тариф]([Название])
PRIMARY KEY ( [Название провайдера],
[Название тарифа]))
CREATE TABLE [Договор]
( [Номер] INT,
id_client INT,
[Провайдер] NVARCHAR(50),
[Тариф] NVARCHAR(50)
PRIMARY KEY ([Номер], id_client),
CONSTRAINT [Договор Клиент]
FOREIGN KEY (id_client) REFERENCES [Клиент]
ON DELETE CASCADE,
FOREIGN KEY([Провайдер], [Тариф])
REFERENCES [Провайдер Тарифа] ([Название провайдера], [Название тарифа]))