【问题标题】:Group by query - Not a single group by function?按查询分组 - 不是按功能分组?
【发布时间】:2012-09-26 04:52:15
【问题描述】:

我有一张这样的桌子

column1 column2 column3

abc      xyz      4
def      ghi      3
abc      xyz      6
abc      xyz      1
jkl      mno      4

查询后的预期结果

column1 column2 column3

abc      xyz      11
def      ghi      3
jkl      mno      4

我的查询如下:

select column1, column2, count(column3)
from
    (select ......) as column1, 
    (select ......) as column2, 
    (select ......) as column3) 
group by column1, column2, count(column3)

我收到此错误“不是单组功能”

【问题讨论】:

    标签: .net sql database oracle


    【解决方案1】:

    使用 SUM 怎么样

    SELECT  column1,
            column2,
            SUM(column3)
    FROM    YOUR_TABLE
    GROUP BY column1,
            column2
    

    【讨论】:

    • 我已经使用了你提到的 sum 函数,但是得到了以下错误“不是单组函数”
    • 使用整个查询。关键是您的 SELECT 列必须与您的 GROUP BY 匹配,即 column1, column2 和附加的 SUM(column3)ora-00937.ora-code.com
    【解决方案2】:

    您需要使用SUM,并且必须删除group by 中的count(column3),如果您确实将列作为子查询的结果,它可能需要看起来像这样:

    select column1, column2, sum(column3) 
    from   (
             select
                 (select ......) as column1, 
                 (select ......) as column2, 
                 (select ......) as column3
               from dual
           )
    group by column1, column2
    

    否则您需要在group by 中重复整个子查询选择。在您的查询中,您说FROM (select .......) as column1,但这意味着子查询称为column1,它不起作用。可以使用前缀column1 来寻址子查询中的选定列。例如,如果您说FROM (select x from test) t1,那么您可以通过写t1.x 来称呼x。

    但是如果你有一个如上所述的简单表格,那么正确的陈述是

    select   column1, column2, sum(column3) from mytable
    group by column1, column2
    

    【讨论】:

      【解决方案3】:

      通过使用简单的查询,你会得到你喜欢的答案

        select col1, col2, sum(col3) from test
        group by col1,col2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        • 1970-01-01
        • 2017-01-15
        • 2013-09-19
        • 1970-01-01
        • 2014-08-27
        相关资源
        最近更新 更多