PostgreSQL 在按另一列分组时从一列计数 DISTINCT

PostgreSQL Count DISTINCT from one column when grouped by another

我有一个 table 看起来像下面这样(简化):

userid   |   action    |    userstate
-----------------------------------------------------
1        | click       |    Maryland
2        | press       |    Delaware
3        | jog         |    New York
3        | leap        |    New York

我要查询的是“每个州执行任何操作的用户数量”

所以结果是:

state |  users_acting
---------------------
Maryland |    1
Delaware |    1
New York |    1

请注意,个人用户只会参与一种状态。

我无法通过按州分组来正确混合不同的用户。我不能

SELECT DISTINCT (userid), COUNT(userid) FROM data GROUP BY state

因为不同的列需要在分组依据中,我实际上不想这样做,更不用说 select 子句的问题了。

感谢任何想法。

刚刚发现有一个 COUNT(DISTINCT( 选项不需要将不同的值放在分组子句中。

SELECT COUNT(DISTINCT userid) FROM data GROUP BY state

成功了吗

你可以试试下面的格式

SELECT COUNT(DISTINCT userid) FROM data GROUP BY state