You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按各国家ALL行总数排序且保持同国家数据聚合

解决方案

你可以通过先计算每个国家的总港口数并将其作为排序依据,关联到所有结果行中,实现按国家总港口数排序且同一国家数据聚合的需求。

修改后的查询语句如下:

WITH country_totals AS (
    -- 计算每个国家的总港口数,作为全局排序的核心依据
    SELECT 
        country,
        COUNT(*) AS total_harbors
    FROM bigquery-public-data.geo_international_ports.world_port_index
    GROUP BY country
),
port_counts AS (
    -- 统计每个国家各港口尺寸的数量
    SELECT 
        country,
        harbor_size,
        COUNT(*) AS hb_count
    FROM bigquery-public-data.geo_international_ports.world_port_index
    GROUP BY country, harbor_size
    UNION ALL
    -- 添加每个国家的"ALL"汇总行
    SELECT 
        country,
        'ALL' AS harbor_size,
        total_harbors AS hb_count
    FROM country_totals
)
SELECT 
    pc.country,
    pc.harbor_size,
    pc.hb_count
FROM port_counts pc
JOIN country_totals ct ON pc.country = ct.country
-- 排序逻辑:先按国家总港口数降序,再确保同国家行聚合,最后让"ALL"行排在国家数据最前面,其余按港口数量降序
ORDER BY ct.total_harbors DESC, pc.country, CASE WHEN pc.harbor_size = 'ALL' THEN 0 ELSE 1 END, pc.hb_count DESC;

逻辑说明

  • country_totals临时表:单独计算每个国家的总港口数,后续用来做全局排序的基准。
  • port_counts临时表:合并了"国家+港口尺寸"的细分统计行,以及"国家+ALL"的汇总行。
  • 最终查询通过关联总港口数表,实现全局按总数量排序;同时通过国家字段保证同国家数据聚合,用CASE语句让每个国家的"ALL"行优先展示。

内容的提问来源于stack exchange,提问作者Szczepando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:58:23