【问题标题】:How to combine two queries calculating maximum in a single report如何在单个报告中组合计算最大值的两个查询
【发布时间】:2015-11-17 11:00:06
【问题描述】:

我有一张表 (table1),其中包含:

子县名, County_name,malepop(每个子县),femalepop(每个子县)

我想制作一份报告,为我提供所在县男性和女性人口最多的子县。

我尝试过的:

我创建了两个查询,一个用于计算男性流行度最高的子县,一个用于计算女性流行度最高的子县。但是,我不确定如何将两者组合成一个报告。我能得到关于如何做到这一点的提示吗?

我使用的查询是:

SELECT Sub_county_name,county_name,male_pop
FROM table1
WHERE male_pop = (SELECT MAX(male_pop) FROM table1 a
                  WHERE a.county_name = table1.county_name);


SELECT Sub_county_name,county_name,female_pop
FROM table1
WHERE female_pop = (SELECT MAX(female_pop) FROM table1 a
                    WHERE a.county_name = table1.county_name);

【问题讨论】:

  • 或将两个 WHERE 子句放在一起?

标签: sql ms-access report


【解决方案1】:

如果您需要组合查询,可以使用以下查询:

SELECT        Sub_county_name, county_name, male_pop, female_pop
FROM            table1
WHERE        (male_pop =
                             (SELECT        MAX(male_pop) AS Expr1
                               FROM            table1 AS a
                               WHERE        (county_name = table1.county_name))) AND (female_pop =
                             (SELECT        MAX(female_pop) AS Expr1
                               FROM            table1 AS a
                               WHERE        (county_name = table1.county_name)))

【讨论】:

  • 我猜 OP 想要 OR 而不是 AND。
【解决方案2】:

我建议将子查询放入FROM 子句中:

SELECT table1.*
FROM table1 JOIN
     (SELECT county_name, MAX(male_pop) as maxmp, MAX(female_pop) as maxfp
      FROM table1
      GROUP BY county_name
     ) m
     ON table1.county_name = m.county_name and
        (table1.male_pop = m.maxmp OR table1.female_pop = m.maxfp);

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2015-06-25
    • 2010-11-17
    • 2020-04-19
    相关资源
    最近更新 更多