簡體   English   中英

Postgres - 使用DISTINCT ON獲取第一行,但也獲得COUNT(*)工作

[英]Postgres - using DISTINCT ON to get first row, but also getting the COUNT(*) work

我正在使用

SELECT DISTINCT ON() 

從一組行返回特定行。 效果很好。 但我還想要返回的是“COUNT(*)”。 所以它可能看起來像

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

但是,當然,我得到一個錯誤,說“名稱應該在GROUP BY聚合函數中”。

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

你可以使用count作為窗口函數:

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

或者在您的情況下,您可以只使用group by名稱group by並使用簡單聚合:

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

sql小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM