Работа функции 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;
→ Ссылка