2010-11-01 88 views
-3

我想創建一個使用php的動態表,但需要獲得下面的查詢來正常工作,但遇到了我在查詢下面給出的錯誤。我需要一些幫助來解決它。聚合函數的一些幫助

SELECT test_case_name AS 'Test Case', 
     AVG(no_of_satelites) AS 'Mean Number of Satelites', 
     AVG(hdop) AS 'Mean of HDOP', 
     AVG(longitude) AS 'Mean of Longitude', 
     STD(AVG( longitude)) AS 'StdDev of Longitude', 
     AVG(latitude) AS 'Mean of Latitude', 
     STD(AVG(latitude)) AS 'StdDev of Latitude', 
     (1.114 * pow(10, 5) * STD(AVG(latitude))), 
     (1.114 * pow(10, 5) * STD(AVG(longitude))) 
FROM test_cases, gga_raw_data 
WHERE gga_raw_data.test_case_id = test_cases.test_case_id 
GROUP BY test_case_name 

錯誤說:

1111 - 無效使用組功能

任何建議或線索,將不勝感激。

回答

3

左括號太多。左括號比右括號多2個。

這是一塊查詢是不均衡:

((1.114 * pow(10, 5) * STD(AVG(latitude))) , 
((1.114 * pow(10, 5) * STD(AVG(longitude))) 
+0

WAO!需要第二隻眼睛。 – ibiangalex 2010-11-01 18:49:44

+0

嗨艾克,剛剛刪除他們和另一個錯誤浮出水面:#1111 - 無效的組功能使用。我懷疑std不能像where子句那樣使用,可能是正確的方式來實現這個相同的查詢? – ibiangalex 2010-11-01 18:53:14

+0

問題在於你使用'STD()'函數的方式。如果你有'STD(AVG(經度))',你可能想要做'STD(經度)'。這會給你「經度」的人口標準偏差,這是我假設你想要達到的。 – 2010-11-01 19:09:18

0

你必須有在GROUP BY子句中列出的SELECT子句中所有非聚合列:

SELECT test_case_name AS 'Test Case', 
    AVG(no_of_satelites) AS 'Mean Number of Satelites', 
    AVG(hdop) AS 'Mean of HDOP', 
    AVG(longitude) AS 'Mean of Longitude', 
    STD(AVG( longitude)) AS 'StdDev of Longitude', 
    AVG(latitude) AS 'Mean of Latitude', 
    STD(AVG(latitude)) AS 'StdDev of Latitude', 
    (1.114 * pow(10, 5) * STD(AVG(latitude))), 
    (1.114 * pow(10, 5) * STD(AVG(longitude))) 
FROM test_cases, gga_raw_data 
WHERE gga_raw_data.test_case_id = test_cases.test_case_id 
GROUP BY test_case_name, (1.114 * pow(10, 5) * STD(AVG(latitude))), 
    (1.114 * pow(10, 5) * STD(AVG(longitude))) 
+0

感謝Leslie指出了這一點,但在我做這件事之前,我必須糾正一些事情。剛剛檢查了我的數學,並意識到,尋找單個值的STD()是沒有意義的,正如我在查詢中所做的那樣,即查找STD(AVG())。假設STD()對數據集的影響與AVG()一樣。我必須把這個整理好。 – ibiangalex 2010-11-02 07:51:41