使用多个条件格式化数据透视表
Format pivot data with multiple conditions
我当前的查询是
SELECT COUNT (DISTINCT("json_extract_scalar"("data", '$.user_id'))) AS users, event, date(timestamp)
FROM tableName
WHERE category='category'
GROUP BY event, date(timestamp)
ORDER BY date(timestamp) DESC
现在,它显示的输出格式为:
users | date | event |
3 | 2019-09-25 | visit |
4 | 2019-09-25 | click_button |
10 | 2019-09-25 | visit |
我希望它的形式是
| date | users_visits | users_clicks |
|2019-09-25 | 3 | 4 |
|2019-09-26 | 10 | 0 |
我写了这个查询,但它不起作用,我真的不明白如何正确地在旋转查询中获取计数查询
SELECT date(timestamp), [visit] AS users_visits, [click_button] AS users_clicks
FROM (
SELECT
("json_extract_scalar"("data", '$.user_id')), event, date(timestamp)
FROM tableName
WHERE category='category'
GROUP BY event, date(timestamp)
)
) P
PIVOT
(
COUNT (DISTINCT ("json_extract_scalar"("data", '$.user_id')))
FOR event in
([visit], [click_button])
) AS pvt
order by pvt.date(timestamp)
条件聚合是否有效?
SELECT date(timestamp),
COUNT(DISTINCT CASE WHEN event = 'visit'
THEN "json_extract_scalar"("data", '$.user_id')
END) as visits,
COUNT(DISTINCT CASE WHEN event = 'click_button'
THEN "json_extract_scalar"("data", '$.user_id')
END) as click_button
FROM tableName
WHERE category = 'category'
GROUP BY date(timestamp)
ORDER BY date(timestamp) DESC
我当前的查询是
SELECT COUNT (DISTINCT("json_extract_scalar"("data", '$.user_id'))) AS users, event, date(timestamp)
FROM tableName
WHERE category='category'
GROUP BY event, date(timestamp)
ORDER BY date(timestamp) DESC
现在,它显示的输出格式为:
users | date | event |
3 | 2019-09-25 | visit |
4 | 2019-09-25 | click_button |
10 | 2019-09-25 | visit |
我希望它的形式是
| date | users_visits | users_clicks |
|2019-09-25 | 3 | 4 |
|2019-09-26 | 10 | 0 |
我写了这个查询,但它不起作用,我真的不明白如何正确地在旋转查询中获取计数查询
SELECT date(timestamp), [visit] AS users_visits, [click_button] AS users_clicks
FROM (
SELECT
("json_extract_scalar"("data", '$.user_id')), event, date(timestamp)
FROM tableName
WHERE category='category'
GROUP BY event, date(timestamp)
)
) P
PIVOT
(
COUNT (DISTINCT ("json_extract_scalar"("data", '$.user_id')))
FOR event in
([visit], [click_button])
) AS pvt
order by pvt.date(timestamp)
条件聚合是否有效?
SELECT date(timestamp),
COUNT(DISTINCT CASE WHEN event = 'visit'
THEN "json_extract_scalar"("data", '$.user_id')
END) as visits,
COUNT(DISTINCT CASE WHEN event = 'click_button'
THEN "json_extract_scalar"("data", '$.user_id')
END) as click_button
FROM tableName
WHERE category = 'category'
GROUP BY date(timestamp)
ORDER BY date(timestamp) DESC