sql group by用于计算不同的用户

时间:2015-02-19 11:28:39

标签: sql postgresql

在Postgres中,我有一个properties表,其中包含以下列:item, user, property。每个项目都是唯一的,属于一个独特的用户。每个用户可以拥有多个项目。但是属性不是唯一的,即,对于许多项,相同的属性可以是相同的。如,

item, user, property
--------------------
item1 user1 property1
item1 user1 property2
item2 user1 property1
item2 user1 property3
item2 user1 property4
item3 user2 property2
item3 user2 property4

现在我想计算有多少独特用户在他们的项目中拥有给定属性,即,在这种情况下我需要得到:

property1 1
property2 2
property3 1
property4 2

我可以想到这样的SQL查询:

SELECT COUNT(*), x.property
FROM (SELECT user, property
      FROM properties
      GROUP BY user, property) x
GROUP BY x.property;

有更好的方法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

select count(distinct user), property
from properties
group by property

<强> sql fiddle demo