Ранжируйте от числа, пока оно не дойдет до того же числа SQL - PullRequest
0 голосов
/ 04 мая 2020

У меня есть вопрос SQL, который нужно решить с помощью rank или row_number (я думаю), но я не знаю как.

У меня есть таблица, показывающая поведение пользователей приложения. Пользователь может щелкнуть кнопку меню в приложении, а затем приложение покажет различные продукты (внутри представления меню). Итак, каждая строка в моей таблице - это щелчок, который пользователь делает внутри приложения.

В таблице есть столбец «меню» и столбец «продукт». Если пользователь нажимает кнопку меню, столбец «меню» принимает значение 1. Если пользователь щелкает что-либо еще, оно равно 0. Внутри меню пользователь может щелкать разные продукты, поэтому для каждого продукта, который был выбран, отображается «продукт». column 'равно 1.

Итак, я хочу знать, сколько продуктов пользователь щелкнул в представлении меню. У меня также есть дата, платформа (iOS или Android), страна, идентификатор пользователя и идентификатор сеанса. Все, что происходит за 30 минут, происходит внутри сеанса, а сеанс относится только к одному пользователю. И идентификатор пользователя, и идентификатор сеанса уникальны.

Таблица выглядит следующим образом:

enter image description here

Эта таблица показывает, что пользователь AAA открыл меню, а затем щелкнул 2 разных продукта, пользователь BBB открыл меню один раз за один сеанс и ничего не щелкнул, а затем открыл снова и ничего не щелкнул. Наконец, пользователь CCC щелкнул меню, а затем открыл 2 продукта в первом сеансе, а затем в другом сеансе он / она щелкнул меню и открыл один продукт.

Я хочу что-то вроде этого:

enter image description here

Я пробовал использовать rank и row_number, и я могу получить такой же рейтинг для строк продуктов, но не могу получить меню строка должна иметь тот же порядковый номер, что и строка товаров.

Надеюсь, вы можете мне помочь: (

1 Ответ

0 голосов
/ 04 мая 2020

Я думаю, вы хотите dense_rank():

select dense_rank() over (order by user_id, date, session_id)

Не на 100% ясно, нужен ли date.

...