2011-01-18 54 views
0

試圖爲我們的支持票務系統創建報告,並且我試圖在報告中顯示2條結果,該結果顯示一天中打開多少張票以及一天中關閉多少張票的平均滾動率。如何在24小時內平均SQLite數據庫中的項目數量?

基本上,查詢整張門票表格,將每張單獨的日期分隔出來,然後計算每個單獨日期的門票數量,然後平均該數字。

我的朋友給了我這個查詢:

SELECT AVG(ticket_count) 
FROM (SELECT COUNT(*) AS ticket_count FROM tickets 
GROUP BY DATE(created_at, '%Y'), DATE(created_at, '%m'), DATE(created_at, '%d')) AS ticket_part 

但它不似乎爲我工作。我得到的結果是去年創造的門票數量。

回答

0

查詢的中間部分將表摺疊爲單個行,因此外部部分沒有任何要組合的內容。如果沒有看到ticket_count的模式,很難說你需要什麼,但在猜測我想試試這個:

SELECT 
    AVG(CAST(TicketsOpened AS REAL)) -- The cast to REAL ensures that { 1, 2 } averages to 1.5 rather than 1 
FROM 
    (
    SELECT 
    CAST(created_at AS DATE) AS Day -- The cast to DATE truncates any time element; if you're storing date alone, you can omit this 
    COUNT(*) AS TicketsOpened 
    FROM 
    ticket_count 
    GROUP BY 
    CAST(created_at AS DATE) 
) AS X 

希望幫助!

+0

哇,SQLite中沒有日期類型?真的?如果您在日期中使用文本字段,請使用「LEFT(created_as,10)」而不是「CAST(created_at AS DATE)」。 – 2011-01-18 21:54:45

1

這裏是最終爲我工作:

SELECT round(CAST(AVG(TicketsOpened) AS REAL), 1) as DailyOpenAvg 
FROM 
(SELECT date(created_at) as Day, COUNT(*) as TicketsOpened 
FROM tickets 
GROUP BY date(created_at) 
) AS X 
相關問題