[英]Best approach to parametrized aggregates
我正在为我的应用收集分析数据。 对于我跟踪的每个指标,我允许在7天,30天或90天的时间间隔内查看它,并按日期,工作日或一天中的时间进行分组。
处理此问题的最佳方法是什么?
是否可以避免对每个指标执行6个不同的查询6(每个间隔1个,每个分组1个)?
例
会话中位数响应时间(按星期几分组) Analytic(mon, tue, wed..)
中位会话响应时间(按一天中的时间分组) Analytic(1 am, 2 am, 3 am..)
新会话(按星期几分组) Analytic(mon, tue, wed..)
新会话(按日期分组) Analytic(20 aug, 19 aug, 18 aug etc...)
对不起,混合了一点posgressql和sql-server。 @ ...(例如,@ Param)是变量的sql-server语法,我不知道它的postgressql语法,但希望它仍然可以说明该技术。
SELECT
date
,CASE
WHEN @Param = 'date' THEN date AS
WHEN @Param = 'dow' THEN EXTRACT(DOW FROM date)
....
ELSE
END as ParamGRoup
,SUM(amount) as TotalAmount
FROM
Table
WHERE
date BETWEEN @LowDateParam TO @HighDateParam
GROUP BY
date
,CASE
WHEN @Param = 'date' THEN date AS
WHEN @Param = 'dow' THEN EXTRACT(DOW FROM date)
....
ELSE
END as ParamGRoup
我在输入示例之前输入了此内容,因此希望它仍然很清楚。 无论如何,一种实现方法是使用case语句,然后将同一case语句分组。 如果可能将其按多个级别分组,则可能必须将case语句的THEN / Else部分强制转换为VARCHAR或某种形式,以确保数据类型一致,但应该可以使您到达那里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.