开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute有什么函数可以求 一个表里,group by 后的,a1列di

问题1:大数据计算MaxCompute有什么函数可以求 一个表里,group by 后的,a1列distinct 后 a2列的均值?
问题2:不能用having,因为还要计算别的

展开
收起
真的很搞笑 2023-07-18 22:01:42 103 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在 MaxCompute 中,可以使用 GROUP BY 子句对表进行分组操作,然后使用聚合函数(Aggregation Function)对每个分组内的数据进行计算。如果需要对分组后的结果进行排序,并提取其中的某一列,可以使用 ORDER BY 和 SELECT 子句来实现。例如,可以使用如下的 SQL 语句来实现对表中 a1 列进行分组并求取每个分组的最大值,并按照最大值进行降序排序,最后只选取最大值和 a1 列:

    n1ql
    Copy
    SELECT MAX(a1) AS max_a1, group_key
    FROM my_table
    GROUP BY group_key
    ORDER BY max_a1 DESC
    LIMIT 10;
    在上述 SQL 语句中,我们使用 MAX 函数来求取每个分组内 a1 列的最大值,并通过 AS 子句指定了结果列的别名为 max_a1。同时,我们也使用了 GROUP BY 子句对表进行了分组操作,并指定了分组的列为 group_key。最后,我们使用 ORDER BY 子句对结果进行降序排序,并使用 LIMIT 子句限制结果集的大小为 10。

    2023-07-29 10:55:30
    赞同 展开评论 打赏
  • 问题1:要在MaxCompute中对一个表进行group by操作后,可以使用以下函数来求a1列distinct后a2列的均值:

    SELECT a1, AVG(a2)
    FROM your_table
    GROUP BY a1;
    

    上述SQL语句将根据a1列对表进行分组,并计算每个分组中a2列的平均值。

    问题2:如果您需要在group by后还需要计算其他内容,并且不适合使用HAVING子句,您可以考虑使用子查询或WITH语句来实现。以下是一个示例:

    WITH grouped_data AS (
        SELECT a1, AVG(a2) AS avg_a2
        FROM your_table
        GROUP BY a1
    )
    SELECT a1, avg_a2, other_calculation
    FROM grouped_data
    WHERE other_calculation > 10;
    

    在上面的示例中,我们首先使用WITH语句创建了一个名为grouped_data的临时表,其中包含了按a1列分组后的avg_a2列的平均值。然后,我们在主查询中从grouped_data表中选取所需的列,并可以在WHERE子句中进行其他计算和筛选。

    2023-07-28 21:18:29
    赞同 展开评论 打赏
  • 回答1:AVG函数可以计算a2列的均值,a1列distinct是不是可以用HAVING子句筛选一下。
    回答2:那用where子语句,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-07-19 12:34:28
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载