我试图将我的所有结果归结为" Count"但是它告诉我列#34; Count"不存在。
SELECT
Date,
COUNT(Date) as Count,
a.Average
From Rundown
LEFT JOIN (
SELECT AVG(Count) AS Average, WorkOrder FROM Rundown
) AS a
ON (Rundown.WorkOrder = a.WorkOrder)
WHERE Rundown.Date > (DATE_SUB(CURDATE(), INTERVAL 30 Day))
AND Completion = 1
GROUP BY Date
我期待的结果
Date | Count | Average
2016-09-08 | 19 | 19
2016-09-09 | 20 | 19
2016-09-10 | 19 | 19
2016-09-12 | 17 | 19
编辑:
我最后写了第二个查询来为我完成这个
SELECT
ROUND(avg(a.Count)) as Average
FROM (
SELECT
Date,
COUNT(Date) as Count
From Rundown
WHERE Rundown.Date > (DATE_SUB(CURDATE(), INTERVAL 7 Day))
AND Completion = 1
GROUP BY Date
) as a
答案 0 :(得分:0)
在您的查询中,不存在列数
SELECT
Date,
COUNT(Date) as Count,
a.Average
From Rundown
LEFT JOIN (
SELECT AVG(Count) AS Average, WorkOrder FROM Rundown
^^ this column not exist
) AS a
ON (Rundown.WorkOrder = a.WorkOrder)
WHERE Rundown.Date > (DATE_SUB(CURDATE(), INTERVAL 30 Day))
AND Completion = 1
GROUP BY Date
你可以使用Count(Date)
SELECT
Date,
COUNT(Date) as Count,
a.Average
From Rundown
LEFT JOIN (
SELECT AVG(Count(Date)) AS Average, WorkOrder FROM Rundown
) AS a
ON (Rundown.WorkOrder = a.WorkOrder)
WHERE Rundown.Date > (DATE_SUB(CURDATE(), INTERVAL 30 Day))
AND Completion = 1
GROUP BY Date
对于分组来说
SELECT
`Date`,
COUNT(`Date`) as Count,
a.Average
From Rundown
LEFT JOIN (
SELECT AVG(Count(`Date`)) AS Average, WorkOrder FROM Rundown
GROUP BY WorkOrder
) AS a
ON (Rundown.WorkOrder = a.WorkOrder)
WHERE Rundown.`Date` > (DATE_SUB(CURDATE(), INTERVAL 30 Day))
AND Completion = 1
GROUP BY `Date`
;
答案 1 :(得分:0)
你没有计算任何地方的日期。所以你这样计算。
SELECT COUNT(*) / COUNT(DISTINCT date) AS Average, WorkOrder
FROM Rundown
GROUP BY WorkOrder
答案 2 :(得分:0)
这看起来像GROUP BY ... WITH ROLLUP
的工作,但没有完整的架构,很难说。我认为这就是你的意思:
SELECT
Date,
COUNT(*) / COUNT(Date) AS Count_or_Average
From Rundown
WHERE Rundown.Date > CURDATE() - INTERVAL 30 Day
AND Completion = 1
GROUP BY Date WITH ROLLUP
NULL日期是您的平均值