2016-10-07 2 views
0

Ich versuche, alle meine Ergebnisse aus der Spalte "Count" zu berechnen, aber es sagt mir, dass die Spalte "Count" nicht existiert.Mysql Durchschnitt aller Ergebnisse von 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 

Ergebnisse Ich bin

Date | Count | Average 
2016-09-08 | 19 | 19 
2016-09-09 | 20 | 19 
2016-09-10 | 19 | 19 
2016-09-12 | 17 | 19 

erwartet Edit:

ich eine zweite Abfrage Schreiben endete dies in Ihrer Anfrage für mich nicht existieren

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 

Antwort

0

abzuschließen eine Säulenzählung

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 

könnten Sie Count (Datum)

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 

Und für die Gruppe verwenden, indem

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` 
; 
+0

nie diesen Fehler gesehen, bevor Sie mit Ihrer Anfrage, # 1111 - Ungültige Verwendung von Gruppenfunktion –

+0

@JohnLang obviuos Ihre Fehler maskieren Sie die Gruppe nach Problem .. trotzdem habe ich die Antwort aktualisieren .. – scaisEdge

+0

Ich bekomme immer noch den gleichen Fehler für beide Ihre Fragen aus irgendeinem Grund –

0

Sie nicht Zählung überall für jeden Tag haben. Also kalkulierst du so.

SELECT COUNT(*)/COUNT(DISTINCT date) AS Average, WorkOrder 
FROM Rundown 
GROUP BY WorkOrder 
0

Dies wie ein Job Sucht GROUP BY ... WITH ROLLUP aber ohne ein vollständiges Schema, ist es schwer zu sagen. Ich denke, das ist, was Sie was:

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 

Wo ein NULL-Datum ist Ihre durchschnittliche