在 Postgresql 中不重复计数

Counting without duplicates in Postgresql

我有一个table如下

**SP     MA     SL   NG**
jame     j001   1    20200715
jame     j001   -1   20200715
jame     j001   1    20200715
pink     p002   12   20200720 
pink     p002   -3   20200720 
pink     p002   12   20200721 

我正在尝试计算记录,但我必须消除重复项。所以,我想要一个像

这样的结果
 **SP    count
jame     1
pink     2

有什么建议吗?请给我一些帮助。 谢谢!

您在寻找 count(distinct ...) 吗?

例如,如果您想要每个 sp 的列 ng 中不同值的计数:

select sp, count(distinct ng) cnt from mytable group by sp

如果要消除完全重复的记录,另一种选择是先在子查询中select distinct

select sp, count(*) cnt
from (select distinct sp, ma, sl, ng from mytable) t
group by sp