2017-06-10 2 views
0

Ich wollte eine Abfrage in Microsoft Access 2016, die den Bereich (Maximum - Minimum) vs Durchschnitt pro Tag zeigt.MS Access 2016 Query Range vs Durchschnitt pro Tag

Ich habe eine Abfrage getan, die die Ergebnisse aller Datensätze zwischen „16-Jun-16“ und „17-Jun-16“ zeigt:

SELECT [Date Time], [Operation Grade-Load], [MFR g/10min] 
FROM [In process analysis result] 
WHERE ([Date Time] Between Date()-360 And Date()-358) 
AND ([Operation Grade-Load] Like "MH*"); 

Ich bin aber ratlos, wie kann ich fahre fort, meine Abfrage zu ändern, um den "Bereich" und "Durchschnitt" jedes Tages anzuzeigen. Ich denke, ich sollte Avg(), Max() - Min() Funktionen verwenden. Kann mir jemand dabei helfen?

Bearbeiten: Pro Tag wird berechnet zwischen [Vortag 02:00:00] und [Heute 02:00:00]. Beispiel:

  • 16-Jun-16 = Zeilensätze zwischen "16-Jun-16 02.00.00" und "17-Jun-16 02.00.00"
  • 17-Jun -16 = Zeilensätze zwischen "17-Jun-16 02.00.00" und "18-Jun-16 02.00.00"
  • ...

Ist es überhaupt möglich zu berechnen Daten basierend auf dieser Logik?

Jede Hilfe wird geschätzt. Danke.

enter image description here

Edit 1: ich meine SQL-Abfrage aktualisiert:

SELECT [Date Time], [Range], [Average] 
FROM [In process analysis result], (SELECT Max([MFR g/10min])-Min([MFR g/10min]) AS [Range], Avg([MFR g/10min]) AS Average 
FROM [In process analysis result] 
WHERE ((([In process analysis result].[Date Time]) Between Date()-360 And Date()-358) AND (([In process analysis result].[Operation Grade-Load]) Like "MH*")) 
) AS [%$##@_Alias] 
WHERE ((([In process analysis result].[Date Time]) Between Date()-360 And Date()-358) AND (([In process analysis result].[Operation Grade-Load]) Like "MH*")) 
ORDER BY [In process analysis result].[Date Time]; 

Und es stellte sich heraus, nahe genug an, was ich wollte ... aber noch nicht, da es nicht berechnet basiert an einem Tag.

enter image description here

Edit 2: Hier ist das erwartete Ergebnis:

enter image description here

bearbeitet 3: Nach @USeptim, das ist das Ergebnis der Abfrage, die erstellt wurde. Es werden jedoch zwei weitere Spalten mit [Bereich] und [PromedioDeMFR g/10min] erstellt.

enter image description here

+0

zeigen Sie uns ein Beispiel Ihres erwarteten Ergebnisses – dbajtr

+0

@dbajtr Bitte beachten Sie Edit 2 in meinem ursprünglichen Beitrag. –

Antwort

0

Sie können dies tun:

SELECT [In process analysis result].[Date Time], [In process analysis 
result].[MFR g/10min], QueryAux.Range, QueryAux.[PromedioDeMFR g/10min] 
FROM [In process analysis result] INNER JOIN 
(SELECT Max([MFR g/10min])-Min([MFR g/10min]) AS Range, Avg([In process 
analysis result].[MFR g/10min]) AS [PromedioDeMFR g/10min], [In process 
analysis result].[Date Time], [In process analysis result].[Operation Grade- 
Load] 
FROM [In process analysis result] 
GROUP BY [In process analysis result].[Date Time], [In process analysis 
result].[Operation Grade-Load]) QueryAux 
ON ([In process analysis result].[Operation Grade-Load] = QueryAux. 
[Operation Grade-Load]) AND ([In process analysis result].[Date Time] = 
QueryAux.[Date Time]) 
WHERE ((([In process analysis result].[Date Time]) Between Date()-360 And 
Date()-358) AND (([In process analysis result].[Operation Grade-Load]) Like 
"MH*")) 
ORDER BY [In process analysis result].[Date Time]; 

Sie eine Abfrage mit der Unterabfrage erstellen können, die ich „Abfrage aux“ und verweisen sie direkt aufgerufen haben.

+0

Danke, mein Herr. Ich habe die Abfrage ausgeführt und sie zeigte mir, was ich in Edit 3 meines ursprünglichen Posts gepostet habe. Es hat zwei zusätzliche Spalten erstellt, [Range] und [PromedioDeMFR g/10min]. Was soll ich mit diesen beiden Spalten machen? –

+0

[PromedioDeMFR g/10min] sollte [Average] genannt werden, andererseits ist [Bereich] eine Spalte in Ihrer Abfrage: SELECT Max ([MFR g/10min]) - Min ([MFR g/10min ]) AS [Bereich], Durchschnitt ([MFR g/10min]) AS Durchschnitt –