一些有关聚合函数的帮助

时间:2010-11-01 18:17:21

标签: mysql sql mysql-error-1064 mysql-error-1111

我正在尝试使用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 - 无效使用组功能

任何建议或线索将不胜感激。

2 个答案:

答案 0 :(得分:3)

左括号太多。你还有两个左括号而不是右括号。

这是不平衡的查询部分:

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

答案 1 :(得分: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 ) ) )