如何在联合列SQL上使用MIN
我在sql中使用MIN函数时遇到问题。我想从我的count函数中得到所有行的最小值列表 这是我的密码:如何在联合列SQL上使用MIN,sql,postgresql,count,union,min,Sql,Postgresql,Count,Union,Min,我在sql中使用MIN函数时遇到问题。我想从我的count函数中得到所有行的最小值列表 这是我的密码: SELECT land, MIN(count) as lowest FROM ( SELECT temp.land, count(*) FROM ( SELECT grans.land FROM Grans UNION ALL SELECT grans.aland FROM Grans ) as temp GROU
SELECT land, MIN(count) as lowest
FROM
(
SELECT temp.land, count(*)
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
GROUP BY land
ORDER BY land
目前,我只得到一个表,列出了土地和土地计数,尽管土地计数已重命名为最低值。如果您只需要最小值,请删除group by,因为如果您将group by放入,它将返回您在子查询中得到的所有土地计数,因为在count中,它已经成为一个组,这是不同的
SELECT *
FROM
(
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
order by cnt asc
Limit 1
另一种方法是
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
having cnt in(
SELECT min(cnt)
FROM
(
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
)
而且它也起作用
select * from
(
SELECT * ,row_number() over(partition by land order by cnt) as rn
FROM
(
SELECT temp.land, count(*) as cnt
FROM
(
SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) as temp
GROUP BY land
ORDER BY land
) as subQuery
) t where t.rn=1
我将使用窗口功能:
SELECT land, cnt
FROM (SELECT temp.land, count(*) as cnt,
MIN(count(*)) OVER () as min_cnt
FROM (SELECT grans.land FROM Grans
UNION ALL
SELECT grans.aland FROM Grans
) temp
GROUP BY land
) l
WHERE cnt = min_cnt;
好吧,我想我明白你的意思,但问题是我确实想要一张表,上面有陆地上所有的物体,但只有那些最小值的……没有问题,把这个放在哪里condition@Sara回答编辑,如果是mysql,然后使用限制它和秩序,你会得到最小的土地价值,它会越来越好,至少。现在我得到了错误消息:LIMIT的参数必须是bigint类型,而不是boolean类型第15行:LIMIT cnt=1@Sara请问您的数据库管理系统名称?您使用的是什么关系数据库管理系统?请相应地标记您的问题(如果您的RDBMS支持窗口功能,这很容易解决)。我强烈建议您输入已完成的示例数据,站点就是您希望从该示例数据得到的结果。