Вопрос:

Оператор SQL для возврата числа на основе предыдущих записей И сгруппированных

sql sql-server

51 просмотра

2 ответа

6 Репутация автора

для заданной таблицы с userid1, userid2, clicktime

Я хотел бы вернуть количество записей, когда в прошлый раз у нас была запись с userid1 = userid2 и наоборот, другими словами. Все это сгруппировано по месяцам

это должно рассчитывать, если

userid1      userid2       clicktime
34           67            january
67           34            december

Результат должен быть таким: Day Number_of_Matches

12/22/2016 23 12/23/2016 3 12/24/2016 33

Автор: jay Источник Размещён: 12.06.2019 01:44

Ответы (2)


0 плюса

1456 Репутация автора

Предполагая, что вы хотите иметь одну строку для любой пользовательской комбинации, и что каждая строка имеет 2 разных идентификатора пользователя:

select case 
when userid1>userid2 then userid1
when userid1<userid2 then userid2 end as userid1, 
case 
when userid1<userid2 then userid1
when userid1>userid2 then userid2 end as userid2, 
clicktime, count(*) from table
group by 1,2,3

Если вы хотите иметь 2 комбинации, это просто:

select 
    userid1,userid2,clicktime, count(*)
    from table
    group by 1,2,3

Я предполагал, что время клика - уникальный месяц

Автор: Balinti Размещён: 12.06.2019 02:33

0 плюса

6 Репутация автора

Позвольте мне перефразировать,

Я хотел бы сосчитать все строки за заданное время, если в предыдущий раз были строки с userid1 = userid2 и userid2 = userid1. Другими словами, событие x происходит, когда пользователь 1 нажимает на пользователя 2, если пользователь 2 ранее нажал на пользователя user1. Я хочу сосчитать все события x, сгруппированные по времени.

Автор: jay Размещён: 12.06.2019 04:25
Вопросы из категории :
32x32