我正在为我的应用收集分析。对于我跟踪的每个指标,我允许在7天,30天或90天的间隔内查看,以及按日期,按工作日或按时间进行分组。
处理此问题的最佳方法是什么?
是否可以避免为每个指标执行6个不同的查询6(每个间隔1个,每个分组一个)?
实施例
中间人对话响应时间(按星期几组)Analytic(mon, tue, wed..)
中间人对话响应时间(按时间分组)Analytic(1 am, 2 am, 3 am..)
新对话(按星期几组)Analytic(mon, tue, wed..)
新对话(按日期分组)Analytic(20 aug, 19 aug, 18 aug etc...)
答案 0 :(得分:0)
抱歉混合了一点posgressql whit 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或其他东西,以确保一致的数据类型,如果它可以按多个级别进行分组,但它应该可以帮助您。