Работа функции group by в MySql
Написать SQL запрос для получения топа первых покупок пользователей из США. Первая покупка - это покупка пользователя совершенная раньше всех остальных. Топ - ранжированный по убыванию набор вида (количество пользователей, тип покупки) Такие таблицы:
CREATE TABLE users(
id int,
country_code VARCHAR(2)
);
CREATE TABLE payments(
id int,
user_id int,
type int,
timestamp TIMESTAMP
);
Мое решение:
SELECT type, user_id FROM payments p, users u
WHERE u.id = p.user_id AND country_code LIKE '+1' AND min(timestamp)
GROUP BY type;
Ошибка:Invalid use of group function
Ответы (1 шт):
Автор решения: Miron
→ Ссылка
Создание базы данных и ее заполнение(INSERT INTO payments вызвать 2 раза!):
CREATE TABLE users(
id INT primary key auto_increment,
country_code VARCHAR(2)
);
CREATE TABLE payments(
id INT primary key auto_increment,
user_id int references users.id,
type int,
timestamp TIMESTAMP
);
INSERT INTO users
(country_code)
VALUES
(1),
(2);
INSERT INTO payments
(user_id, type, timestamp)
VALUES
(1, 1, CURRENT_TIMESTAMP),
(1, 1, CURRENT_TIMESTAMP),
(2, 2, CURRENT_TIMESTAMP),
(2, 2, CURRENT_TIMESTAMP),
(2, 3, CURRENT_TIMESTAMP);
Сам запрос:
SELECT
type,
COUNT(*)
FROM
payments as p1
WHERE
p1.timestamp = (
SELECT
MIN(p2.timestamp)
FROM
payments as p2
WHERE
p1.user_id = p2.user_id)
GROUP BY type;