簡體   English   中英

語句之間的SQL查詢

[英]SQL query between statement

我在PHP管理員中使用mySQL時遇到問題,查詢我的數據庫時遇到問題,這是查詢語句:

SELECT Record_ID, Datalog_ID, TIME, AVG( Value ) 
FROM  `Datalog_Values` 
WHERE Datalog_ID =  '241'
AND TIME
BETWEEN  '2012-06-01'
AND  '2012-06-30'
GROUP BY HOUR( TIME ) 

我得到的結果只是第一天的結果,而不是period.ie的結果。

我的陳述有什么問題????

您的查詢使用MySQL的(隱藏)功能(稱為隱藏列)。 該查詢正在為Record_id,Datalog_id和Time選擇任意值,因為group by子句中未提及。

如果我推測預期的查詢是:

SELECT Record_ID, Datalog_ID, hour(TIME), AVG( Value ) 
FROM  `Datalog_Values` 
WHERE Datalog_ID =  '241' AND TIME BETWEEN  '2012-06-01' AND '2012-06-30'
GROUP BY Record_id, Datalog_id, hour(TimE ) 

然后,假設查詢的目標是針對給定DataLog_id的每個Record_Id和一天中的小時產生結果,這便開始變得有意義。 您要獲取一天中每個小時還是一個月中每個小時的結果?

如果提供示例數據並解釋所需的輸出,則可以更好地回答您的問題。

您需要使用相同的數據類型進行比較。 所以,如果你的領域是日期/時間YYYY-MM-DD HH:MM:SS,那么你需要做的BETWEEN使用相同的格式。 嘗試僅在兩個日期的末尾放置00:00:00。

如果“時間”列具有您在where條件中指定的格式('YYYY-MM-DD'),則按小時分組(時間)就沒有意義。 嘗試進行“按時間分組”或“按月分組(時間)”

否則,您將以錯誤的方式獲取where條件,並且需要在每個條件的末尾添加hh:mm:ss。

如果要每小時平均,請確保“時間”列的數據類型為“日期/時間”,這意味着其格式為('yyyy / MM / dd hh:mm:ss')

如果您使用這種格式,那么我想這個SO問題-答案將為您提供幫助: SQL Server按每小時DateTime計數進行分組?

當然,它適用於SQL Sever,但您會明白的。 您可以在此處看到如何按每天的小時數進行分組。 因為如果您僅按小時分組(時間),您將獲得整個月的特定小時的分組,而不是每天分開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM