我有一个包含三个字段的表:username, postName, post。如何首先按postName分组,然后按用户名分组。例如,我的表中有4行
- username1, Convo1, My First Post
- username1, Convo1, My Second Post
- username2, Convo1, My First Post
- username3, Convo2, My First Post
我如何将Convo1组合在一起(总数为3),然后将用户名组合在一起(因此计数变为2,因为第1行和第2行具有相同的用户名)。有办法做到这一点与一个查询?
下面的查询应该可以做到。(当然要用whateverTableName代替)
SELECT postName, count(*) uniqueUsers
FROM
( SELECT username, postName, count(*)
FROM whateverTableName
GROUP BY username, postName ) subqry1
GROUP BY postName
样本输出:postName uniqueUsers
-------- -----------
Convo1 2
Convo2 1
相同的解决方案,但作为一对视图,用于不喜欢使用复杂查询的框架:
CREATE VIEW convo_by_user_post
AS
SELECT username, postName, count(*)
FROM whateverTableName
GROUP BY username, postName;
CREATE VIEW convo_unique_users
AS
SELECT postName, count(*) uniqueUsers
FROM convo_by_user_post
GROUP BY postName;
然后从你的应用程序:
SELECT postName, uniqueUsers FROM convo_unique_users