簡體   English   中英

參數化聚集的最佳方法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM