@krag123

Как получить количество первичных записей в таблице?

Есть таблица с продуктами, я бы хотел вывести продукты которые выбирает пользователь как второй или третий.
То есть, если пользователь покупает апельсины, то с ними яблоки и например груши.
Если груши, то с ними сыр.
Это я сделал.
Но я бы хотел ещё и вывести одновременно сколько пользователь купило первичный продукт.
Схема такая и запросы на текущий момент такие: sqlfiddle.com/#!17/f9a70/1.

Я не знаю как добавить колонку, где будет указано сколько человек купило первичный продукт.
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Если принять такую формулировку:

Первичным является товар, одновременно с которым куплено больше всего других товаров

то запрос на получение "первичных" товаров будет такой:

WITH cte AS (
    SELECT t1.cat_id, RANK() OVER (ORDER BY COUNT(t2.cat_id) DESC) rnk
    FROM user_to_cat t1
    JOIN user_to_cat t2 ON t1.user_id = t2.user_id
                       AND t1.cat_id <> t2.cat_id
    GROUP BY 1
    )
SELECT category.code
FROM cte
JOIN category ON category.id = cte.cat_id
WHERE rnk = 1

На данных из fiddle запрос даст 2 товара - orange и pear, оба они участвуют в 6 парах, тогда как apple участвуют в 4, а lemon в 2 парах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы