用sql求2018年4月每个时段的,pv、uv 数量、按照uv转化率取top5,使用滑动 -- uv 转化率 = 转化人数/uv数量 ,假设现在转化人数是 1
时间: 2023-12-10 21:38:24 浏览: 203
假设你有一个名为`log`的表,其中包含以下列:`timestamp` (时间戳)、`user_id` (用户ID)、`page_id` (页面ID)。
以下是使用滑动窗口实现上述查询的示例代码:
```
WITH hourly_counts AS (
SELECT
DATE_TRUNC('hour', TIMESTAMP_SECONDS(timestamp)) AS hour,
COUNT(DISTINCT user_id) AS uv,
COUNT(1) AS pv
FROM
log
WHERE
DATE_TRUNC('month', TIMESTAMP_SECONDS(timestamp)) = '2018-04-01'
GROUP BY
hour
),
hourly_conversions AS (
SELECT
hour,
COUNT(DISTINCT CASE WHEN page_id = 'conversion_page' THEN user_id ELSE NULL END) AS conversions
FROM
log
WHERE
DATE_TRUNC('month', TIMESTAMP_SECONDS(timestamp)) = '2018-04-01'
GROUP BY
hour
),
hourly_rates AS (
SELECT
hc.hour,
hc.uv,
hc.pv,
COALESCE(hc.uv, 0) AS divisor,
COALESCE(hc.uv, 0) - COALESCE(hc.uv, 0) + COALESCE(hc.uv, 0) * COALESCE(hc.pv, 0) * 0.01 AS rate
FROM
hourly_counts hc
LEFT JOIN
hourly_conversions hcv
ON
hc.hour = hcv.hour
),
top_hourly_rates AS (
SELECT
hour,
uv,
pv,
rate
FROM
hourly_rates
ORDER BY
rate DESC
LIMIT
5
)
SELECT
*
FROM
top_hourly_rates;
```
这个查询将`log`表按小时分组,并计算每小时的独立访客数 (UV) 和页面浏览量 (PV)。它还计算了每个小时的转化次数,并使用滑动窗口计算了每个小时的UV转化率。最后,查询返回前5个UV转化率最高的小时。
阅读全文