【问题标题】:General SQL - Understanding Group BY通用 SQL - 了解 Group BY
【发布时间】:2017-09-09 04:12:30
【问题描述】:

我在理解 GROUP BY 时遇到了一些麻烦。

  1. 除了聚合函数之外,SELECT 语句中的每个表达式是否都必须在 GROUP BY 中?
  2. GROUP BY 到底在做什么?

我正在尝试计算我们客户的平均年龄。

Date| Name|Country|Balance|Age
2016|Sharp|Iceland|  $200 |29 
2016|Bob  |Finland|  $100 |22 
2016|Sharp|Iceland|  $500 |29
2016|James|USA    |   $10 |21 
2017|Sharp|Iceland|    $2 |30

因为数据很大,我做了一个GROUP BY。

SELECT Date, Name, Country, SUM(Balance), Age 
  FROM Table 
 GROUP BY Date, Name, Country, Age

但是,这会是什么输出……会是:

2016|Sharp|Iceland|$700|29
2016|Bob  |Finland|$100|22
2016|James|USA    |$10 |21
2017|Sharp|Iceland|$700|30

那么我将如何计算平均年龄?

好困惑, 锋利的。

【问题讨论】:

    标签: sql group-by hive average


    【解决方案1】:

    除了聚合函数之外,SELECT 语句中的每个表达式是否都必须在 GROUP BY 中?

    • .. select 中提到的每个表达式都必须在 group by 子句或任何聚合函数必须对其应用。但副 反之亦然,即 group by 中的每个表达式都不需要在 select 中。

    GROUP BY 到底在做什么?

    • group by,根据group by子句排列数据并应用聚合 在聚合函数中使用的列上的函数。

    在您的示例中,正如您所说,您需要平均 Age 但是 group by 子句的标准应该是什么?你想要平均年龄日期明智,国家明智,还是日期明智和国家明智..

    以下是示例查询:

    -- date and contry wise both 
    select Country,Avg(Age) from demo123
    group by Date,Country
    
    -- date wise 
    select Date,Avg(Age) from demo123
    group by Date 
    
    -- Country wise 
    select Country,Avg(Age) from demo123
    group by Country 
    

    【讨论】:

    • 我需要它的客户总数。我可以选择日期,计数(*)作为 Total_Accounts,AVG(年龄) FROM Table GROUP BY Date
    【解决方案2】:

    总的来说,我对 SQL 和编程完全陌生,但从我目前所学到的知识来看:

    GROUP BY 从数据库中获取多个列,并将它们压缩为一组进行排序。语法如下: 选择列名 从表 需要的条件(平均年龄) GROUP BY 列名

    然后,您可以根据需要订购它们。我相信您说的是正确的,如果您选择列,您将按您选择的相同列进行分组。

    这是我使用的参考。 SQL info

    没有太深入,但我就是这么读的。

    希望我所说的可能会有所帮助。祝你好运。

    发芽

    【讨论】:

      【解决方案3】:

      Aggregate 函数根据Select 列表返回输出,并且选定的列必须在GROUP BY 子句中。

      您需要的查询将是这样的。

      SELECT Date, Name, Country, SUM(Balance), AVG(Age) 
      FROM Table 
      GROUP BY Date, Name, Country
      

      【讨论】:

        猜你喜欢
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多