【问题标题】:some help with aggregate functions [closed]聚合函数的一些帮助[关闭]
【发布时间】:2010-11-01 18:17:20
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    左括号太多。左括号比右括号多 2 个。

    这是不平衡的查询部分:

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

    【讨论】:

    • 嗨,Ike,刚刚删除了它们,另一个错误浮出水面:#1111 - 无效使用组功能。我怀疑 std 不能在 where 子句中使用,什么是实现相同查询的正确方法?
    • 问题在于您使用STD() 函数的方式。如果你有STD( AVG( longitude ) ),你可能想改用STD( longitude )。这将为您提供longitude 的总体标准偏差,这就是我假设您试图达到的目标。
    • 谢谢你是对的艾克。今天早上在检查了我的数学以了解 STD 的工作原理后才意识到这一点。
    【解决方案2】:

    您必须在 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 ) ) ) 
    

    【讨论】:

    • 感谢 Leslie 指出这一点,但在我对此做任何事情之前,我必须纠正一些事情。刚刚检查了我的数学并意识到,像我在查询中所做的那样寻找单个值的 STD() 是没有意义的,即寻找 STD(AVG())。假设 STD() 与 AVG() 一样对数据集产生影响。我必须把它整理好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2020-09-08
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多