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

如何将多个SELECT语句分别置于不同列中合并查询?

嘿,我帮你把这个查询相关的内容整理成清晰的Markdown格式,顺便给你一个更高效的完整查询方案:

需求概述

我们需要编写一个SQL查询,实现两个核心统计目标:

  • 按军衔类别(Officer、NCO、Troop)分别统计男、女侦察兵的数量
  • 额外统计所有侦察兵中男性、女性的总人数
现有查询片段

你目前已经写了部分嵌套子查询的代码,如下:

SELECT 
    (Select count(Gender) from stormtroopers_officer join st_officer_assign on stormtroopers_officer.STID=st_officer_assign.STID where Gender='Female' AND st_officer_assign.Role = 'Scout') as 'FOScout',
    (SELECT count(Gender) from stormtroopers_nco join st_nco_assign on stormtroopers_nco.STID=st_nco_assign.STID where Gender='Female' AND st_nco_assign.Role = 'Scout') as 'FNCOScout',
    -- 此处缺失Troop类别的女性侦察兵统计,以及所有类别的男性侦察兵统计
    -- 同时还未包含男女侦察兵的总数统计
优化后的完整查询

为了让查询更简洁易维护,我们可以用UNION ALL先把三个军衔表的侦察兵数据合并,再通过分组和条件聚合完成统计,同时直接输出总数:

WITH scout_troops AS (
    -- 提取Officer类别的侦察兵数据
    SELECT 
        'Officer' AS rank_category,
        Gender
    FROM stormtroopers_officer o
    JOIN st_officer_assign a ON o.STID = a.STID
    WHERE a.Role = 'Scout'
    UNION ALL
    -- 提取NCO类别的侦察兵数据
    SELECT 
        'NCO' AS rank_category,
        Gender
    FROM stormtroopers_nco n
    JOIN st_nco_assign a ON n.STID = a.STID
    WHERE a.Role = 'Scout'
    UNION ALL
    -- 提取Troop类别的侦察兵数据
    SELECT 
        'Troop' AS rank_category,
        Gender
    FROM stormtroopers_troop t
    JOIN st_troop_assign a ON t.STID = a.STID
    WHERE a.Role = 'Scout'
)
-- 按军衔类别统计男女侦察兵数量
SELECT 
    rank_category,
    SUM(CASE WHEN Gender = 'Female' THEN 1 ELSE 0 END) AS female_count,
    SUM(CASE WHEN Gender = 'Male' THEN 1 ELSE 0 END) AS male_count
FROM scout_troops
GROUP BY rank_category
UNION ALL
-- 统计所有侦察兵中的男女总人数
SELECT 
    'Total' AS rank_category,
    SUM(CASE WHEN Gender = 'Female' THEN 1 ELSE 0 END) AS female_count,
    SUM(CASE WHEN Gender = 'Male' THEN 1 ELSE 0 END) AS male_count
FROM scout_troops;

这个方案用CTE(公共表表达式)先整合所有侦察兵数据,再通过两次分组分别输出各军衔类别的统计结果和总统计,结构清晰且后续修改扩展更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:47:07