GithubHelp home page GithubHelp logo

database-mysql-practice's Introduction

1. Разботка и дополнение схемы базы данных

Дополненная схема базы данных:

  • Таблица Автомобиль
  • Таблица Водитель
  • Таблица Оператор
  • Таблица Скидки
  • Таблица Заказ
  • Таблица Точки
  • Таблица Поездка
  • Таблица Отзывы

2. Создание таблиц по предложенной схеме БД

-- Создание таблицы Автомобиль
CREATE TABLE Автомобиль (
    ID_автомобиля INT PRIMARY KEY AUTO_INCREMENT,
    Гос_номер VARCHAR(10) NOT NULL,
    Марка VARCHAR(50),
    Модель VARCHAR(50),
    Вид_топлива VARCHAR(20),
    Цвет VARCHAR(20),
    Личный BOOLEAN
);

-- Создание таблицы Водитель
CREATE TABLE Водитель (
    Позывной_водителя INT PRIMARY KEY AUTO_INCREMENT,
    Фамилия VARCHAR(50),
    Имя VARCHAR(50),
    Отчество VARCHAR(50),
    Номер_телефона VARCHAR(20),
    Состояние VARCHAR(20),
    ID_автомобиля INT,
    FOREIGN KEY (ID_автомобиля) REFERENCES Автомобиль(ID_автомобиля)
);

-- Создание таблицы Оператор
CREATE TABLE Оператор (
    Позывной_оператора INT PRIMARY KEY AUTO_INCREMENT,
    Фамилия VARCHAR(50),
    Имя VARCHAR(50),
    Отчество VARCHAR(50),
    Номер_телефона VARCHAR(20),
    Пароль VARCHAR(50)
);

-- Создание таблицы Скидки
CREATE TABLE Скидки (
    ID_скидки INT PRIMARY KEY AUTO_INCREMENT,
    Номер_карты VARCHAR(20),
    Скидка DECIMAL(5,2)
);

-- Создание таблицы Заказ
CREATE TABLE Заказ (
    ID_заказа INT PRIMARY KEY AUTO_INCREMENT,
    Состояние VARCHAR(20),
    Дата_и_время_поступления DATETIME,
    Номер_телефона VARCHAR(20),
    Улица VARCHAR(50),
    Дом VARCHAR(10),
    Багаж BOOLEAN,
    Начальная_стоимость DECIMAL(10,2),
    Стоимость_со_скидкой DECIMAL(10,2),
    Комментарий_водителю TEXT,
    Позывной_водителя INT,
    Позывной_оператора INT,
    ID_скидки INT,
    FOREIGN KEY (Позывной_водителя) REFERENCES Водитель(Позывной_водителя),
    FOREIGN KEY (Позывной_оператора) REFERENCES Оператор(Позывной_оператора),
    FOREIGN KEY (ID_скидки) REFERENCES Скидки(ID_скидки)
);

-- Создание таблицы Точки
CREATE TABLE Точки (
    ID_заказа INT,
    Улица VARCHAR(50),
    Дом VARCHAR(10),
    PRIMARY KEY (ID_заказа, Улица, Дом),
    FOREIGN KEY (ID_заказа) REFERENCES Заказ(ID_заказа)
);

-- Создание таблицы Поездка
CREATE TABLE Поездка (
    ID_поездки INT PRIMARY KEY AUTO_INCREMENT,
    ID_заказа INT,
    Дата_и_время_поездки DATETIME,
    Длительность INT,
    Расстояние DECIMAL(10,2),
    Стоимость DECIMAL(10,2),
    FOREIGN KEY (ID_заказа) REFERENCES Заказ(ID_заказа)
);

-- Создание таблицы Отзывы
CREATE TABLE Отзывы (
    ID_отзыва INT PRIMARY KEY AUTO_INCREMENT,
    ID_поездки INT,
    Оценка INT CHECK (Оценка BETWEEN 1 AND 5),
    Комментарий TEXT,
    Дата_отзыва DATETIME,
    FOREIGN KEY (ID_поездки) REFERENCES Поездка(ID_поездки)
);

3. Ввод исходных данных

-- Ввод данных в таблицу Автомобиль
INSERT INTO Автомобиль (Гос_номер, Марка, Модель, Вид_топлива, Цвет, Личный) VALUES
('A123BC', 'Toyota', 'Camry', 'Бензин', 'Белый', TRUE),
('B456CD', 'Honda', 'Accord', 'Дизель', 'Черный', FALSE),
('C789DE', 'Ford', 'Focus', 'Электро', 'Синий', TRUE);

-- Ввод данных в таблицу Водитель
INSERT INTO Водитель (Фамилия, Имя, Отчество, Номер_телефона, Состояние, ID_автомобиля) VALUES
('Иванов', 'Иван', 'Иванович', '1234567890', 'Работает', 1),
('Петров', 'Петр', 'Петрович', '0987654321', 'Работает', 2),
('Сидоров', 'Сидор', 'Сидорович', '1122334455', 'Работает', 3);

-- Ввод данных в таблицу Оператор
INSERT INTO Оператор (Фамилия, Имя, Отчество, Номер_телефона, Пароль) VALUES
('Смирнов', 'Сергей', 'Сергеевич', '6677889900', 'pass123'),
('Кузнецова', 'Анна', 'Алексеевна', '5566778899', 'pass456');

-- Ввод данных в таблицу Скидки
INSERT INTO Скидки (Номер_карты, Скидка) VALUES
('1234', 10.00),
('5678', 15.00),
('9101', 5.00);

-- Ввод данных в таблицу Заказ
INSERT INTO Заказ (Состояние, Дата_и_время_поступления, Номер_телефона, Улица, Дом, Багаж, Начальная_стоимость, Стоимость_со_скидкой, Комментарий_водителю, Позывной_водителя, Позывной_оператора, ID_скидки) VALUES
('Новый', '2024-05-01 08:30:00', '1234567890', 'Ленина', '10', TRUE, 500.00, 450.00, 'Аккуратно', 1, 1, 1),
('Выполнен', '2024-05-01 09:00:00', '0987654321', 'Кирова', '20', FALSE, 300.00, 255.00, 'Быстро', 2, 2, 2),
('Отменен', '2024-05-01 09:30:00', '1122334455', 'Советская', '30', TRUE, 400.00, 380.00, 'Ожидание', 3, 1, 3);

-- Ввод данных в таблицу Точки
INSERT INTO Точки (ID_заказа, Улица, Дом) VALUES
(1, 'Ленина', '10'),
(1, 'Красная', '15'),
(2, 'Кирова', '20'),
(2, 'Мира', '25'),
(3, 'Советская', '30');

-- Ввод данных в таблицу Поездка
INSERT INTO Поездка (ID_заказа, Дата_и_время_поездки, Длительность, Расстояние, Стоимость) VALUES
(1, '2024-05-01 08:40:00', 30, 10.5, 450.00),
(2, '2024-05-01 09:10:00', 20, 7.3, 255.00);

-- Ввод данных в таблицу Отзывы
INSERT INTO Отзывы (ID_поездки, Оценка, Комментарий, Дата_отзыва) VALUES
(1, 5, 'Отличная поездка!', '2024-05-01 10:00:00'),
(2, 4, 'Хорошо, но можно лучше.', '2024-05-01 11:00:00');

4. Выполнение заданий

Индексы

-- Создание индекса на таблицу Заказ по полю Номер_телефона
CREATE INDEX idx_номер_телефона ON Заказ (Номер_телефона);

-- Создание уникального индекса на таблицу Автомобиль по полю Гос_номер
CREATE UNIQUE INDEX idx_гос_номер ON Автомобиль (Гос_номер);

Ограничения в базах данных

-- Ограничение на таблицу Водитель по полю Номер_телефона, чтобы номера были уникальны
ALTER TABLE Водитель ADD CONSTRAINT unq_

номер_телефона UNIQUE (Номер_телефона);

-- Ограничение на таблицу Заказ по полю Стоимость_со_скидкой, чтобы стоимость не была отрицательной
ALTER TABLE Заказ ADD CONSTRAINT chk_стоимость_со_скидкой CHECK (Стоимость_со_скидкой >= 0);

Представления в SQL

-- Создание представления для просмотра завершенных заказов
CREATE VIEW Завершенные_заказы AS
SELECT * FROM Заказ
WHERE Состояние = 'Выполнен';

Оконные функции

-- Пример использования оконной функции RANK()
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
RANK() OVER (ORDER BY Начальная_стоимость DESC) as Ранг
FROM Заказ;

-- Пример использования оконной функции ROW_NUMBER()
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
ROW_NUMBER() OVER (ORDER BY Дата_и_время_поступления) as Номер
FROM Заказ;

-- Пример использования оконной функции SUM() OVER
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
SUM(Начальная_стоимость) OVER (PARTITION BY Позывной_водителя) as Общая_стоимость
FROM Заказ;

Временные таблицы

-- Создание временной таблицы для хранения временных данных
CREATE TEMPORARY TABLE Временная_таблица AS
SELECT * FROM Заказ
WHERE Состояние = 'Новый';

5. Выполнение манипуляций с таблицами

Фильтрация данных в SQL: WHERE

-- Фильтрация заказов по состоянию
SELECT * FROM Заказ
WHERE Состояние = 'Выполнен';

Сортировка в SQL: ORDER BY

-- Сортировка заказов по дате поступления
SELECT * FROM Заказ
ORDER BY Дата_и_время_поступления DESC;

Вставка и изменение данных в SQL

-- Вставка нового заказа
INSERT INTO Заказ (Состояние, Дата_и_время_поступления, Номер_телефона, Улица, Дом, Багаж, Начальная_стоимость, Стоимость_со_скидкой, Комментарий_водителю, Позывной_водителя, Позывной_оператора, ID_скидки)
VALUES ('Новый', '2024-05-01 12:00:00', '2233445566', 'Победы', '50', FALSE, 600.00, 540.00, 'Без комментариев', 1, 2, 1);

-- Обновление состояния заказа
UPDATE Заказ
SET Состояние = 'Отменен'
WHERE ID_заказа = 3;

Группировки и фильтрация в SQL: HAVING

-- Группировка заказов по водителю и фильтрация по общей стоимости
SELECT Позывной_водителя, SUM(Начальная_стоимость) as Общая_стоимость
FROM Заказ
GROUP BY Позывной_водителя
HAVING Общая_стоимость > 1000.00;

Запрос данных из нескольких таблиц: JOIN

-- Объединение данных из таблиц Заказ и Водитель
SELECT Заказ.ID_заказа, Заказ.Номер_телефона, Водитель.Фамилия, Водитель.Имя
FROM Заказ
JOIN Водитель ON Заказ.Позывной_водителя = Водитель.Позывной_водителя;

Типы соединений в SQL

-- Левое соединение данных из таблиц Заказ и Скидки
SELECT Заказ.ID_заказа, Заказ.Номер_телефона, Скидки.Скидка
FROM Заказ
LEFT JOIN Скидки ON Заказ.ID_скидки = Скидки.ID_скидки;

-- Правое соединение данных из таблиц Заказ и Скидки
SELECT Заказ.ID_заказа, Заказ.Номер_телефона, Скидки.Скидка
FROM Заказ
RIGHT JOIN Скидки ON Заказ.ID_скидки = Скидки.ID_скидки;

Подзапросы

-- Подзапрос для получения заказов с максимальной стоимостью
SELECT * FROM Заказ
WHERE Начальная_стоимость = (SELECT MAX(Начальная_стоимость) FROM Заказ);

Транзакции

-- Пример транзакции
START TRANSACTION;

UPDATE Водитель
SET Состояние = 'Отдыхает'
WHERE Позывной_водителя = 1;

INSERT INTO Заказ (Состояние, Дата_и_время_поступления, Номер_телефона, Улица, Дом, Багаж, Начальная_стоимость, Стоимость_со_скидкой, Комментарий_водителю, Позывной_водителя, Позывной_оператора, ID_скидки)
VALUES ('Новый', '2024-05-02 08:00:00', '3344556677', 'Садовая', '60', FALSE, 700.00, 630.00, 'Без комментариев', 2, 1, 2);

COMMIT;

Использование оператора CASE

-- Пример использования оператора CASE для классификации стоимости заказа
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
CASE
    WHEN Начальная_стоимость < 300 THEN 'Дешево'
    WHEN Начальная_стоимость BETWEEN 300 AND 600 THEN 'Средне'
    ELSE 'Дорого'
END AS Категория_стоимости
FROM Заказ;
### 1. Разработка и дополнение схемы базы данных

Дополненная схема базы данных:

- Таблица `Автомобиль`
- Таблица `Водитель`
- Таблица `Оператор`
- Таблица `Скидки`
- Таблица `Заказ`
- Таблица `Точки`
- Таблица `Поездка`
- Таблица `Отзывы`

### 2. Создание таблиц по предложенной схеме БД

**Таблица Автомобиль:**

| ID_автомобиля | Гос_номер | Марка | Модель | Вид_топлива | Цвет | Личный |
|---------------|-----------|-------|--------|-------------|------|--------|
| 1             | A123BC    | Toyota| Camry  | Бензин      | Белый| TRUE   |
| 2             | B456CD    | Honda | Accord | Дизель      | Черный| FALSE  |
| 3             | C789DE    | Ford  | Focus  | Электро     | Синий | TRUE   |

**Таблица Водитель:**

| Позывной_водителя | Фамилия | Имя  | Отчество   | Номер_телефона | Состояние | ID_автомобиля |
|-------------------|---------|------|------------|----------------|-----------|---------------|
| 1                 | Иванов  | Иван | Иванович   | 1234567890     | Работает  | 1             |
| 2                 | Петров  | Петр | Петрович   | 0987654321     | Работает  | 2             |
| 3                 | Сидоров | Сидор| Сидорович  | 1122334455     | Работает  | 3             |

**Таблица Оператор:**

| Позывной_оператора | Фамилия   | Имя    | Отчество    | Номер_телефона | Пароль  |
|--------------------|-----------|--------|-------------|----------------|---------|
| 1                  | Смирнов   | Сергей | Сергеевич   | 6677889900     | pass123 |
| 2                  | Кузнецова | Анна   | Алексеевна  | 5566778899     | pass456 |

**Таблица Скидки:**

| ID_скидки | Номер_карты | Скидка |
|-----------|-------------|--------|
| 1         | 1234        | 10.00  |
| 2         | 5678        | 15.00  |
| 3         | 9101        | 5.00   |

**Таблица Заказ:**

| ID_заказа | Состояние | Дата_и_время_поступления | Номер_телефона | Улица     | Дом | Багаж | Начальная_стоимость | Стоимость_со_скидкой | Комментарий_водителю | Позывной_водителя | Позывной_оператора | ID_скидки |
|-----------|-----------|-------------------------|----------------|-----------|-----|-------|----------------------|-----------------------|----------------------|-------------------|--------------------|-----------|
| 1         | Новый     | 2024-05-01 08:30:00     | 1234567890     | Ленина    | 10  | TRUE  | 500.00               | 450.00                | Аккуратно            | 1                 | 1                  | 1         |
| 2         | Выполнен  | 2024-05-01 09:00:00     | 0987654321     | Кирова    | 20  | FALSE | 300.00               | 255.00                | Быстро               | 2                 | 2                  | 2         |
| 3         | Отменен   | 2024-05-01 09:30:00     | 1122334455     | Советская | 30  | TRUE  | 400.00               | 380.00                | Ожидание             | 3                 | 1                  | 3         |

**Таблица Точки:**

| ID_заказа | Улица   | Дом |
|-----------|---------|-----|
| 1         | Ленина  | 10  |
| 1         | Красная | 15  |
| 2         | Кирова  | 20  |
| 2         | Мира    | 25  |
| 3         | Советская | 30 |

**Таблица Поездка:**

| ID_поездки | ID_заказа | Дата_и_время_поездки | Длительность | Расстояние | Стоимость |
|------------|-----------|----------------------|--------------|------------|-----------|
| 1          | 1         | 2024-05-01 08:40:00  | 30           | 10.5       | 450.00    |
| 2          | 2         | 2024-05-01 09:10:00  | 20           | 7.3        | 255.00    |

**Таблица Отзывы:**

| ID_отзыва | ID_поездки | Оценка | Комментарий            | Дата_отзыва         |
|-----------|------------|--------|------------------------|---------------------|
| 1         | 1          | 5      | Отличная поездка!      | 2024-05-01 10:00:00 |
| 2         | 2          | 4      | Хорошо, но можно лучше | 2024-05-01 11:00:00 |

### 4. Выполнение заданий

#### Индексы

```sql
-- Создание индекса на таблицу Заказ по полю Номер_телефона
CREATE INDEX idx_номер_телефона ON Заказ (Номер_телефона);

-- Создание уникального индекса на таблицу Автомобиль по полю Гос_номер
CREATE UNIQUE INDEX idx_гос_номер ON Автомобиль (Гос_номер);

Ограничения в базах данных

-- Ограничение на таблицу Водитель по полю Номер_телефона, чтобы номера были уникальны
ALTER TABLE Водитель ADD CONSTRAINT unq_номер_телефона UNIQUE (Номер_телефона);

-- Ограничение на таблицу Заказ по полю Стоимость_со_скидкой, чтобы стоимость не была отрицательной
ALTER TABLE Заказ ADD CONSTRAINT chk_стоимость_со_скидкой CHECK (Стоимость_со_скидкой >= 0);

Представления в SQL

-- Создание представления для просмотра завершенных заказов
CREATE VIEW Завершенные_заказы AS
SELECT * FROM Заказ
WHERE Состояние = 'Выполнен';

Оконные функции

-- Пример использования оконной функции RANK()
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
RANK() OVER (ORDER BY Начальная_стоимость DESC) as Ранг
FROM Заказ;

-- Пример использования оконной функции ROW_NUMBER()
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
ROW_NUMBER() OVER (ORDER BY Дата_и_время_поступления) as Номер
FROM Заказ;

-- Пример использования оконной функции SUM() OVER
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
SUM(Начальная_стоимость) OVER (PARTITION BY Позывной_водителя) as Общая_стоимость
FROM Заказ;

Временные таблицы

-- Создание временной таблицы для хранения временных данных
CREATE TEMPORARY TABLE Временная_таблица AS
SELECT * FROM Заказ
WHERE Состояние = 'Новый';

5. Выполнение манипуляций с таблицами

Фильтрация данных в SQL: WHERE

-- Фильтрация заказов по состоянию
SELECT * FROM Заказ
WHERE Состояние = 'Выполнен';

Результат:

ID_заказа Состояние Дата_и_время_поступления Номер_телефона Улица Дом Багаж Начальная_стоимость Стоимость_со_скидкой Комментарий_водителю Позывной_водителя Позывной_оператора ID_скидки
2 Выполнен 2024-05-01 09:00:00 0987654321 Кирова 20 FALSE 300.00 255.00 Быстро 2 2 2

Сортировка в SQL: ORDER BY

-- Сортировка заказов по д

ате поступления
SELECT * FROM Заказ
ORDER BY Дата_и_время_поступления DESC;

Результат:

ID_заказа Состояние Дата_и_время_поступления Номер_телефона Улица Дом Багаж Начальная_стоимость Стоимость_со_скидкой Комментарий_водителю Позывной_водителя Позывной_оператора ID_скидки
3 Отменен 2024-05-01 09:30:00 1122334455 Советская 30 TRUE 400.00 380.00 Ожидание 3 1 3
2 Выполнен 2024-05-01 09:00:00 0987654321 Кирова 20 FALSE 300.00 255.00 Быстро 2 2 2
1 Новый 2024-05-01 08:30:00 1234567890 Ленина 10 TRUE 500.00 450.00 Аккуратно 1 1 1

Вставка и изменение данных в SQL

-- Вставка нового заказа
INSERT INTO Заказ (Состояние, Дата_и_время_поступления, Номер_телефона, Улица, Дом, Багаж, Начальная_стоимость, Стоимость_со_скидкой, Комментарий_водителю, Позывной_водителя, Позывной_оператора, ID_скидки)
VALUES ('Новый', '2024-05-01 12:00:00', '2233445566', 'Победы', '50', FALSE, 600.00, 540.00, 'Без комментариев', 1, 2, 1);

-- Обновление состояния заказа
UPDATE Заказ
SET Состояние = 'Отменен'
WHERE ID_заказа = 3;

Результат вставки:

ID_заказа Состояние Дата_и_время_поступления Номер_телефона Улица Дом Багаж Начальная_стоимость Стоимость_со_скидкой Комментарий_водителю Позывной_водителя Позывной_оператора ID_скидки
4 Новый 2024-05-01 12:00:00 2233445566 Победы 50 FALSE 600.00 540.00 Без комментариев 1 2 1

Результат обновления:

ID_заказа Состояние Дата_и_время_поступления Номер_телефона Улица Дом Багаж Начальная_стоимость Стоимость_со_скидкой Комментарий_водителю Позывной_водителя Позывной_оператора ID_скидки
3 Отменен 2024-05-01 09:30:00 1122334455 Советская 30 TRUE 400.00 380.00 Ожидание 3 1 3

Группировки и фильтрация в SQL: HAVING

-- Группировка заказов по водителю и фильтрация по общей стоимости
SELECT Позывной_водителя, SUM(Начальная_стоимость) as Общая_стоимость
FROM Заказ
GROUP BY Позывной_водителя
HAVING Общая_стоимость > 1000.00;

Результат:

Позывной_водителя Общая_стоимость
1 1100.00

Запрос данных из нескольких таблиц: JOIN

-- Объединение данных из таблиц Заказ и Водитель
SELECT Заказ.ID_заказа, Заказ.Номер_телефона, Водитель.Фамилия, Водитель.Имя
FROM Заказ
JOIN Водитель ON Заказ.Позывной_водителя = Водитель.Позывной_водителя;

Результат:

ID_заказа Номер_телефона Фамилия Имя
1 1234567890 Иванов Иван
2 0987654321 Петров Петр
3 1122334455 Сидоров Сидор

Типы соединений в SQL

-- Левое соединение данных из таблиц Заказ и Скидки
SELECT Заказ.ID_заказа, Заказ.Номер_телефона, Скидки.Скидка
FROM Заказ
LEFT JOIN Скидки ON Заказ.ID_скидки = Скидки.ID_скидки;

Результат:

ID_заказа Номер_телефона Скидка
1 1234567890 10.00
2 0987654321 15.00
3 1122334455 5.00
4 2233445566 10.00
-- Правое соединение данных из таблиц Заказ и Скидки
SELECT Заказ.ID_заказа, Заказ.Номер_телефона, Скидки.Скидка
FROM Заказ
RIGHT JOIN Скидки ON Заказ.ID_скидки = Скидки.ID_скидки;

Результат:

ID_заказа Номер_телефона Скидка
1 1234567890 10.00
4 2233445566 10.00
2 0987654321 15.00
3 1122334455 5.00

Подзапросы

-- Подзапрос для получения заказов с максимальной стоимостью
SELECT * FROM Заказ
WHERE Начальная_стоимость = (SELECT MAX(Начальная_стоимость) FROM Заказ);

Результат:

ID_заказа Состояние Дата_и_время_поступления Номер_телефона Улица Дом Багаж Начальная_стоимость Стоимость_со_скидкой Комментарий_водителю Позывной_водителя Позывной_оператора ID_скидки
4 Новый 2024-05-01 12:00:00 2233445566 Победы 50 FALSE 600.00 540.00 Без комментариев 1 2 1

Транзакции

-- Пример транзакции
START TRANSACTION;

UPDATE Водитель
SET Состояние = 'Отдыхает'
WHERE Позывной_водителя = 1;

INSERT INTO Заказ (Состояние, Дата_и_время_поступления, Номер_телефона, Улица, Дом, Багаж, Начальная_стоимость, Стоимость_со_скидкой, Комментарий_водителю, Позывной_водителя, Позывной_оператора, ID_скидки)
VALUES ('Новый', '2024-05-02 08:00:00', '3344556677', 'Садовая', '60', FALSE, 700.00, 630.00, 'Без комментариев', 2, 1, 2);

COMMIT

;

Результат:

Позывной_водителя Состояние
1 Отдыхает
ID_заказа Состояние Дата_и_время_поступления Номер_телефона Улица Дом Багаж Начальная_стоимость Стоимость_со_скидкой Комментарий_водителю Позывной_водителя Позывной_оператора ID_скидки
5 Новый 2024-05-02 08:00:00 3344556677 Садовая 60 FALSE 700.00 630.00 Без комментариев 2 1 2

Использование оператора CASE

-- Пример использования оператора CASE для классификации стоимости заказа
SELECT ID_заказа, Номер_телефона, Начальная_стоимость,
CASE
    WHEN Начальная_стоимость < 300 THEN 'Дешево'
    WHEN Начальная_стоимость BETWEEN 300 AND 600 THEN 'Средне'
    ELSE 'Дорого'
END AS Категория_стоимости
FROM Заказ;

Результат:

ID_заказа Номер_телефона Начальная_стоимость Категория_стоимости
1 1234567890 500.00 Средне
2 0987654321 300.00 Средне
3 1122334455 400.00 Средне
4 2233445566 600.00 Средне
5 3344556677 700.00 Дорого

database-mysql-practice's People

Contributors

katenkyoukotsu avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.