这是我的示例数据集我有分配给他们的学生组,如下所示
uid | groupid | studentid 49 | PZV7cUZCnLwNkSS | wTsBSkkg4Weo8R3 50 | PZV7cUZCnLwNkSS | aIuDhxfChg3enCf 97 | CwvkffFcBCRbzdw | hEwLxJmnJmZFAic 99 | CwvkffFcBCRbzdw | OKFfl58XVQMrAyC 126 | CwvkffFcBCRbzdw | dlH8udyTjNV3nXM 142 | 2vu1eqTCWVjgE58 | Q01Iz3lC2uUMBSB 143 | 2vu1eqTCWVjgE58 | vB5s8hfTaVtx3wO 144 | 2vu1eqTCWVjgE58 | 5O9HA5Z7wVhgi6l 145 | 2vu1eqTCWVjgE58 | OiEUOXNjK2D2s8F
我正在尝试输出以下信息。 我遇到的问题是Group Size列让它输出一个计数。
Studentid | Groupid | Group Size wTsBSkkg4Weo8R3 | PZV7cUZCnLwNkSS | 2 aIuDhxfChg3enCf | PZV7cUZCnLwNkSS | 2 hEwLxJmnJmZFAic | CwvkffFcBCRbzdw | 3 OKFfl58XVQMrAyC | CwvkffFcBCRbzdw | 3 dlH8udyTjNV3nXM | CwvkffFcBCRbzdw | 3
我已经研究过,如果我可以在计数中使用where子句,并且似乎不会让我这样做。我想过做一笔钱,但也无法做到这一点。我觉得我错过了一些简单的事情。
答案 0 :(得分:1)
解决此问题的一种简单方法是使用JOIN
语句:
SELECT a.studentid AS Studentid, a.groupid AS Groupid, COUNT(*)
FROM table AS a
JOIN table AS b ON a.groupid = b.groupid
GROUP BY a.studentid, a.groupid
所以我们在这里加入table
并使用GROUP BY
对studentid
和groupid
进行分组,然后使用COUNT(*)
来计算数字b
中具有相同groupid
的行。
答案 1 :(得分:1)
试试这个:
SELECT *
FROM pony a
LEFT JOIN (
SELECT COUNT(*), groupid
FROM pony
GROUP BY groupid
) b ON a.groupid = b.groupid
答案 2 :(得分:1)
试试这个
SELECT T1.Studentid, T1.Groupid, T2.GroupCount
FROM Your_Table T1
INNER JOIN ( SELECT Groupid, count(*) AS GroupCount FROM Your_Table GROUP BY Groupid ) T2
ON T1.Groupid = T2.Groupid
答案 3 :(得分:0)
你应该尝试:
SELECT COUNT(Groupid) AS Groupsize FROM table;
看来你要做的事情很简单。如果我理解正确,可以使用简单的 SELECT COUNT 语句。要排除同一值的多个退货,请使用 SELECT DISTINCT COUNT()