я следующие данные в таблице под названием TABLE
:
EDIT: Добавлен еще пару строк с Characterid: 26052013030101
, который пропустили.Row на основе условия для Analytics
/------------------------------------------------------------------------\ | CharacterID | EVENTTYPE | TRIGGERTIME | |----------------------+-------------------+-----------------------------| | 11052016190101 | START | 2017-06-01 13:35:38.000 | | 11052016190101 | END | 2017-01-06 08:05:18.620 | | 01012016170101 | START | 2017-06-01 13:33:18.000 | | 01012016170101 | Player Left | 2017-06-01 13:35:21.000 | | 01012016170101 | END | 2017-06-01 13:38:22.000 | | 26052013030101 | START | 2017-06-01 13:35:39.000 | | 26052013030101 | RESET | 2017-06-01 13:35:50.000 | \------------------------------------------------------------------------/
Я написал этот запрос, чтобы получить разницу во времени, основанный на START
и END
значений EVENTTYPE
:
SELECT
cp_start.characterid,
MAX(cp_start.triggertime) AS start_time,
cp_end.triggertime AS end_time,
datediff(second, MAX(cp_start.triggertime), cp_end.triggertime)
FROM
TABLE AS cp_start
INNER JOIN
TABLE AS cp_end ON (
cp_start.CharacterID= cp_end.CharacterID
AND
cp_end.triggertime > cp_start.triggertime)
WHERE cp_start.eventtype = 'START'
AND cp_end.eventtype = 'END'
GROUP BY cp_start.characterid, cp_Start.TriggerTime, cp_end.TriggerTime
Однако то, что мы хотим, чтобы получить разницу во времени для указанных выше условиях - т.е. START
и END
- и если есть какое-либо другое событие между START
и END
, тогда нам необходимо пропустить этот код CharacterID
.
В приведенном выше примере видим CharacterID = 01012016170101
, есть строка с EVENTTYPE='Player Left'
строки между рядами с START
и END
значений для EVENTTYPE
, которые должны быть пропущены или не следует рассматривать как.
EDIT: В приведенном выше значении = 26052013030101 имеется только СТАРТ, но нет КОНЕЦ. У этого есть СБРОС, то есть мы не должны рассматривать это значение, показывая результат. END OF EDIT
Как это достичь?
Во-вторых, есть ли простой способ достичь этого в POWERBI и отображать разницу во времени и времени?
Могут ли такие же «CharacterId» «START» и «END» несколько раз? Или будет ли когда-либо только одна запись на 'CharacterId' с каждым значением' EVENTTYPE' из «START» и «END»? – 3N1GM4
Кроме того, есть ли опечатка в ваших примерах данных или должно быть 3 разных значения CharacterId? Похоже, возможно, тот, который показан как '01012013010101', должен быть' 01012016170101', как две строки под ним? – 3N1GM4
И правильно ли, что дата «END» для 'CharacterId = 11052016190101' является более ранней датой, чем дата« START »для этого же« CharacterId »? Или эти значения DateTime в формате yyyy-dd-mm или что-то еще? – 3N1GM4