尝试为我们的支持票证系统创建报告,我尝试在报告中显示2个结果,显示一天内打开的票证数量和一天内关闭的票证数量的滚动平均值。
基本上,查询整个tickets表,按创建tickets的日期分隔所有内容,计算每一天的tickets数量,然后取该数字的平均值。
我的朋友问我这个问题:
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
但这对我来说似乎行不通。所有我得到的是去年创建的票数的单一结果。
发布于 2011-01-18 21:51:17
查询的中间部分将表折叠为单行,因此外部部分没有可分组的内容。如果不看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
希望这能有所帮助!
发布于 2011-01-19 22:04:49
以下是最终对我起作用的方法:
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
https://stackoverflow.com/questions/4729098
复制相似问题