DataWorks两行数组类型数据,如何用sql求元素出现的次数,按次数倒序排列?
["123gohouse", "123go", "challengeeating", "foodchallenge"]
["123gohouse", "123go"]
在DataWorks中,可以使用SQL语句来实现这个需求。首先,需要将两个数组合并成一个表,然后使用GROUP BY
和COUNT(*)
来计算每个元素出现的次数,最后使用ORDER BY
按照次数倒序排列。
假设数组1存储在表table1
的column1
列中,数组2存储在表table2
的column2
列中,可以使用以下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 BY
和COUNT(*)
计算每个元素出现的次数,并使用ORDER BY
按照次数倒序排列。
在DataWorks中,如果要将两行数组类型数据中的元素出现的次数求出来并按次数倒序排列,可以使用以下SQL语句:
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按次数倒序排列。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。