4

我在用着

SELECT DISTINCT ON() 

从一组行中返回特定行。效果很好。但我还想返回的是“COUNT(*)”。所以它可能看起来像

SELECT DISTINCT ON(name)
  name, num_items, COUNT(name)
FROM customers
ORDER BY name, num_items DESC

但当然,我收到一条错误消息,说“名称应该在 GROUP BY 聚合函数中”。

如何使用包含的“count()”获得相同的结果?

4

1 回答 1

4

您可以count用作窗口功能:

select distinct on (name)
    name, num_items, count(*) over(partition by name)
from customers
order by name, num_items desc;

或者在您的情况下,您可以只使用group by名称并使用简单的聚合:

select
    name, max(num_items), count(*)
from customers
group by name
order by name

sql fiddle demo

于 2013-09-18T05:36:04.520 回答