我只想返回count(object)
最高的行,所以我写了这个查询
select klantnr, count(objectnaam)
from klanten inner join deelnames using(klantnr)
inner join reizen using(reisnr)
inner join bezoeken using(reisnr)
where objectnaam = 'Maan'
group by klantnr
现在,我做不到
select max(count(objectnaam))
我将如何解决这个问题?
我尝试过使用同样无效的子查询
select max(select count(objectnaam) from ....)
我认为我需要在from中使用子查询,所以我重写了这样的查询,我认为它更接近实际答案,但仍然不对,因为现在它返回所有行的最大值。
select klantnr, max(c)
FROM(
select klantnr, count(objectnaam) as c
from klanten inner join deelnames using(klantnr)
inner join reizen using(reisnr)
inner join bezoeken using(reisnr)
where objectnaam = 'Maan'
group by klantnr) as F
group by klantnr
感谢您给我的任何帮助!
答案 0 :(得分:0)
您不提供表的结构,因此您可能需要修改以下查询。但它适用于PostgreSQL 9.x +
WITH t AS (
SELECT klantnr, COUNT(objectnaam) AS c
FROM klanten
WHERE objectnaam = 'Maan'
GROUP BY klantnr
ORDER BY c DESC
LIMIT 1
)
SELECT * FROM t
INNER JOIN deelnames USING(klantnr)
INNER JOIN reizen USING(reisnr)
INNER JOIN bezoeken USING(reisnr);
请参阅http://www.postgresql.org/docs/9.3/static/queries-with.html如何使用WITH QUERIES。
答案 1 :(得分:0)
我找到了一个简单的解决方案:
select klantnr,count (klantnr)
from bezoeken natural join deelnames
where objectnaam ='Maan'
group by klantnr
order by count desc
limit 1