쿼리의, 쿼리에 의한, 쿼리를 위한 yammer case study...
1) 문제 상황 파악
- 고객들이 검색 기능을 어떻게 사용하고 있을까? 검색 경험 향상을 위해 기능을 개선해야 할까? 🤔
2) Yammer 주니어들의 쿼리 이해
각 table 전체 구성
BOUNDS 테이블
SELECT user_id,
event_type,
event_name,
occurred_at,
occurred_at - LAG(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) AS last_event,
LEAD(occurred_at,1) OVER (PARTITION BY user_id ORDER BY occurred_at) - occurred_at AS next_event,
ROW_NUMBER() OVER () AS id -- 테이블에 넘버링 후 컬럼네임은 id라고 하자.
FROM tutorial.yammer_events e
WHERE e.event_type = 'engagement'
ORDER BY user_id,occurred_at
- LAST_EVENT와 NEXT_EVENT 테이블이 생기게 된 과정
FINAL 테이블
SELECT *, -- 실제쿼리에서는 bounds.*
**CASE WHEN last_event >= INTERVAL '10 MINUTE' THEN id
WHEN last_event IS NULL THEN id
ELSE LAG(id,1) OVER (PARTITION BY user_id ORDER BY occurred_at) END AS session**
FROM **bounds** -- (실제 쿼리에서는 STEP 1의 SELECT문)
WHERE last_event >= INTERVAL '10 MINUTE'
OR next_event >= INTERVAL '10 MINUTE'
OR last_event IS NULL
OR next_event IS NULL