跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

JSON_GROUP_OBJECT

将键值对聚合为 JSON 对象,并按指定列分组。JSON_GROUP_OBJECT() 收集指定列中每个分组的所有键值对,并将它们合并为每个分组对应的单个 JSON 对象。

另请参阅:
[SELECT]


语法​

SELECT JSON_GROUP_OBJECT(key_column, value_column) FROM <multipartIdentifier>
WHERE condition
GROUP BY grouping_column;

参数​

key_column
为 JSON 对象提供键的列。

value_column
为 JSON 对象提供值的列。

grouping_column
对结果进行分组所依据的列。

返回值​

返回一个 JSON 对象,包含指定列中所有聚合的键值对,并按 grouping_column 分组。


示例​

按编程语言聚合仓库大小​

-- Example: Group repository names with their corresponding sizes by programming language
SELECT
language,
JSON_GROUP_OBJECT(name, size) AS language_index
FROM
github.repos.repos
WHERE
org = 'stackql'
AND language IS NOT NULL
GROUP BY language;

此查询为每种编程语言返回一个 JSON 对象,其中每个对象以键值对的形式包含仓库名称及其对应的大小。以下是预期输出的示例:

|-------------|-----------------------------------------------------------------------------------|
| language | language_index |
|-------------|-----------------------------------------------------------------------------------|
| C | {"go-sqlite3":35667,"data-encryption-spike":50746} |
|-------------|-----------------------------------------------------------------------------------|
| C++ | {"expt-any-sdk":2399,"isqlang":9} |
|-------------|-----------------------------------------------------------------------------------|
| Dockerfile | {"stackql-compliance-checks-devel":8} |
|-------------|-----------------------------------------------------------------------------------|
| Go | {"stackql-provider-registry":115711, ...} |
|-------------|-----------------------------------------------------------------------------------|

此输出可用于直观展示组织内不同编程语言的仓库大小分布,提供按语言分组的清晰、有条理的数据。