middle
Напишите запрос
Задача 1
Пример
CREATE TABLE table (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
created TIMESTAMP NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
Требуется написать запрос, который вернёт максимальное значение id и значение created для этого id:
Пример
SELECT id, created FROM table WHERE id = (SELECT MAX(id) FROM table);
Альтернативный вариант без подзапроса:
Пример
SELECT id, created FROM table ORDER BY id DESC LIMIT 1;
Задача 2
Пример
CREATE TABLE track_downloads (
download_id BIGINT(20) NOT NULL AUTO_INCREMENT,
track_id INT NOT NULL,
user_id BIGINT(20) NOT NULL,
download_time TIMESTAMP NOT NULL DEFAULT 0,
PRIMARY KEY (download_id)
);
Написать SQL-запрос, возвращающий все пары (download_count, user_count), где user_count — общее ненулевое число пользователей, сделавших ровно download_count скачиваний 19 ноября 2010 года:
Пример
SELECT DISTINCT download_count, COUNT(*) AS user_count
FROM (
SELECT COUNT(*) AS download_count
FROM track_downloads
WHERE download_time = '2010-11-19'
GROUP BY user_id
) AS download_count
GROUP BY download_count;
Здесь внутренний подзапрос группирует скачивания по пользователям и считает количество скачиваний каждого. Внешний запрос группирует по количеству скачиваний и считает, сколько пользователей попало в каждую группу.