Как запросить отношение серии действий, запускаемых пользователями из SQL или NoSQL? - PullRequest
0 голосов
/ 02 апреля 2019

Вот моя таблица, в которой описан пользователь, купивший некоторые вещи в определенный момент.

time, user, item_id

мои данные:

100, u1, i1
150, u2, i2
200, u1, i2
300, u1, i3
450, u2, i5

результат, который я хочу получить, это элементы, которые каждый пользователь купил по времени:

u1, [i1, i2, i3]
u2, [i2, i5]

Есть ли SQL-запрос, который может это сделать? Если нет, есть ли какая-либо другая база данных, которая подходит для этого требования? Считайте, что количество данных может быть огромным, какое решение может иметь лучшую производительность?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Попробуйте, если используется SQL SERVER (TSQL).

SELECT [user],
    abc = 
    STUFF((SELECT   
               ',' +item_id  
            FROM @tblName Where A.[user] = [user]
            FOR XML PATH('')), 1, 1, ''   
        )
FROM @tblName A GROUP by [user]
0 голосов
/ 02 апреля 2019

Да, существуют SQL-запросы, которые могут сделать это для примера в MYSQL, который вы можете использовать GROUP_CONCAT, который удовлетворит ваши требования.

SELECT USER, GROUP_CONCAT(DISTINCT item_id ORDER BY time SEPARATOR ',')
FROM Table 
...