开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks两行数组类型数据,如何用sql求元素出现的次数,按次数倒序排列?

DataWorks两行数组类型数据,如何用sql求元素出现的次数,按次数倒序排列?
["123gohouse", "123go", "challengeeating", "foodchallenge"]
["123gohouse", "123go"]

展开
收起
cuicuicuic 2024-02-06 08:23:17 20 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在DataWorks中,可以使用SQL语句来实现这个需求。首先,需要将两个数组合并成一个表,然后使用GROUP BYCOUNT(*)来计算每个元素出现的次数,最后使用ORDER BY按照次数倒序排列。

    假设数组1存储在表table1column1列中,数组2存储在表table2column2列中,可以使用以下SQL语句:

    WITH combined_data AS (
      SELECT column1 AS value FROM table1
      UNION ALL
      SELECT column2 AS value FROM table2
    )
    SELECT value, COUNT(*) AS count
    FROM combined_data
    GROUP BY value
    ORDER BY count DESC;
    

    这个SQL语句首先使用WITH子句创建一个名为combined_data的临时表,将两个数组的元素合并在一起。然后,使用GROUP BYCOUNT(*)计算每个元素出现的次数,并使用ORDER BY按照次数倒序排列。

    2024-02-06 17:45:56
    赞同 1 展开评论 打赏
  • 北京阿里云ACE会长

    在DataWorks中,如果要将两行数组类型数据中的元素出现的次数求出来并按次数倒序排列,可以使用以下SQL语句:

    image.png

    WITH array_data AS (
    SELECT json_string AS array_string FROM (
    SELECT '["123gohouse", "123go", "challengeeating", "foodchallenge"]' AS json_string
    UNION ALL
    SELECT '["123gohouse", "123go"]' AS json_string
    ) t
    LATERAL VIEW JSON_EXTRACT(array_string, '$.') AS element
    ),
    element_count AS (
    SELECT element, COUNT(
    ) AS count
    FROM array_data
    GROUP BY element
    )
    SELECT element, count
    FROM element_count
    ORDER BY count DESC;
    CopyCopy

    这个SQL语句首先通过LATERAL VIEW JSON_EXTRACT将数组字符串解析为多行,然后使用COUNT(*)计算每个元素出现的次数,最后使用ORDER BY按次数倒序排列。

    image.png

    2024-02-06 08:43:55
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 相关电子书

    更多
    SQL Server 2017 立即下载
    GeoMesa on Spark SQL 立即下载
    原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载