[英]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.