我需要一些帮助来解决这个问题。我正试着用三张表求一个和的最大值。我一直试图在其他帖子的帮助下解决这个问题,但到目前为止,他们都没有帮助我。当使用极限1时,我设法得到了正确的答案,但我想知道如果没有这个,我怎么能做到。
这三张表是
表格
到目前为止,我得到了这个
(select vnamn, sum(mangd) as a from land, export, varldsdel where varldsdel.vkod=land.vkod and land.landkod=export.landkod and ar=2004 group by vnamn)
这给了我以下结果
+----------------+-------------+
| vnamn | sum(mangd) |
+----------------+-------------+
| sydamerika | 61000 |
| noramerika | 50000 |
| europa | 1200 |
+----------------+-------------+
现在这就是我陷入困境的地方。我想做这个结果的最大化,使得只有";sydamerika |61000〃;显示,我已经尝试了一整天,但无法掌握窍门。
感谢
您可以使用Common Table Expression
(CTE(,然后使用MAX
聚合函数过滤出最高值:
WITH summed_mangd AS (
SELECT vnamn,
SUM(mangd) AS total
FROM land
INNER JOIN export
ON export.landkod = land.landkod
INNER JOIN varldsdel
ON varldsdel.vkod = land.vkod
WHERE ar = 2004
GROUP BY vnamn
)
SELECT vnamn,
total
FROM summed_mangd
WHERE total = (SELECT MAX(total)
FROM summed_mangd)
因为您已经有了select查询,所以您可以改为这样做;
Select vnamn, max(a) as mangd from (select vnamn, sum(mangd) as a from land, export, varldsdel where varldsdel.vkod=land.vkod and land.landkod=export.landkod and ar=2004 group by vnamn) k