窗口函数 / 聚合

/* Available in MySQL and SQL Azure */
SELECT 
    Name,
    CountryCode,
    JSON_ARRAYAGG(Name) over p_code AS json_array,
    JSON_OBJECTAGG(Name, Population) over p_code AS json_object
FROM city
WINDOW p_code AS (PARTITION BY CountryCode)


                                                                                                                                                             
NameCountryCodejson_arrayjson_object
OranjestadABW["Oranjestad"]{"Oranjestad": 29,034}
KabulAFG["Kabul", "Qandahar",   "Herat", "Mazar-e-Sharif"]{"Herat": 186,800,   "Kabul": 1,780,000, "Qandahar": 237,500,   "Mazar-e-Sharif": 127,800}
QandaharAFG["Kabul", "Qandahar",   "Herat", "Mazar-e-Sharif"]{"Herat": 186,800,   "Kabul": 1,780,000, "Qandahar": 237,500,   "Mazar-e-Sharif": 127,800}
HeratAFG["Kabul", "Qandahar",   "Herat", "Mazar-e-Sharif"]{"Herat": 186,800,   "Kabul": 1,780,000, "Qandahar": 237,500,   "Mazar-e-Sharif": 127,800}
Mazar-e-SharifAFG["Kabul", "Qandahar",   "Herat", "Mazar-e-Sharif"]{"Herat": 186,800,   "Kabul": 1,780,000, "Qandahar": 237,500,   "Mazar-e-Sharif": 127,800}
NamibeAGO["Namibe", "Benguela",   "Lobito", "Huambo", "Luanda"]{"Huambo": 163,100,   "Lobito": 130,000, "Luanda": 2,022,000, "Namibe":   118,200, "Benguela": 128,300}
BenguelaAGO["Namibe", "Benguela",   "Lobito", "Huambo", "Luanda"]{"Huambo": 163,100,   "Lobito": 130,000, "Luanda": 2,022,000, "Namibe":   118,200, "Benguela": 128,300}
LobitoAGO["Namibe", "Benguela",   "Lobito", "Huambo", "Luanda"]{"Huambo": 163,100,   "Lobito": 130,000, "Luanda": 2,022,000, "Namibe":   118,200, "Benguela": 128,300}
HuamboAGO["Namibe", "Benguela",   "Lobito", "Huambo", "Luanda"]{"Huambo": 163,100,   "Lobito": 130,000, "Luanda": 2,022,000, "Namibe":   118,200, "Benguela": 128,300}
...

JSON_ARRAYAGG - 把结果集作为一个 JSON 数组返回。 JSON_OBJECTAGG - 把结果集作为一个 JSON 对象返回。