2011-09-22 72 views
0

我試圖根據現有的表進行過濾表。根據地點(tmcs),當前表格每24小時每隔一小時每分鐘一行。SQL選擇語句當時間*:00

我想這個表篩選到具有行只是各1個基於關閉位置(TMCS)的24天

這裏一個小時,一個表,我想會做它的SQL語句...

SELECT 
Time_Format(t.time, '%H:00') as time, ROUND(AVG(t.avg), 0) as avg, 
tmc, Date, Date_Time FROM traffic t 
GROUP BY time, tmc, Date 

問題是我仍然可以得到247000行影響......並根據簡單的數學我應該只有:

位置(TMCS):14 小時一天:24 追蹤天數: 24 合計= 14 * 24 * 24 = 12096

我原來的表有477277行 當我做一個新表關閉該查詢我馬上四處247000這是沒有意義的,所以我的查詢必須是錯誤的。

我做這個方法而不是where子句的原因是因爲我想找到每小時的平均速度(平均)。這不是強制性的,所以我可以罰款使用Where子句的時間,但我只是不知道如何做到這一點基礎* 00 任何幫助將不勝感激

+0

什麼版本的SQL您使用的是正常工作? – Sparky

回答

0

修復GROUP BY所以它是標準的,而不是隨機MySQL擴展

SELECT 
Time_Format(t.time, '%H:00') as time, 
ROUND(AVG(t.avg), 0) as avg, 
tmc, Date, Date_Time 
FROM traffic t 
GROUP BY 
Time_Format(t.time, '%H:00'), tmc, Date, Date_Time 

運行此與SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';看到錯誤,其他RDBMS會給你和使MySQL

+0

我試圖運行這個,我仍然有260881行受到影響。對我來說完全是無稽之談。 – Dom

+0

@Dom:請給我們樣品數據,然後是* real *查詢? – gbn