0

我有这个简单的(非实用)表

STUDENTID   SERVICE
1           a         
1           b         
1           c         
1           d         
1           e         
2           a         
2           b         
2           c         
2           d          
2           e         
3           a          
3           b         
3           c         
4           a         
4           f         
5           a         
5           d         
6           f         
6           g         
7           a         
7           b         
7           c         
7           d         
7           e         
8           a         
8           b         
8           c         
8           d         
8           e       

例如,我想将某些信息制成表格。

有多少学生单独注册了服务“a”和服务“b”。
有多少学生单独注册了服务“a”和服务“c”。
有多少学生单独注册了服务“a”和服务“d”。等等

或者

有多少学生注册了服务“a”和“a”以外的其他服务。
有多少学生注册了服务“b”和“b”以外的其他两项服​​务。

未来服务的数量可能会发生变化,但目前还可以。

这就是我现在所拥有的,但它不起作用。

--想要返回注册了 a 和 1 任何其他服务的学生人数

select COUNT(STUDENTID), service from table 
group by service where service = 'a' and studentid in 
(select studentid from table group by STUDENTID having COUNT(service) = 2) 
4

3 回答 3

2

以下是关于您的问题的一些提示。

有多少学生单独注册了服务“a”和服务“b”。

SELECT COUNT(*)
FROM
(
    SELECT studentID
    FROM   tableName
    WHERE  Service IN ('A', 'B')
    GROUP BY StudentID
    HAVING COUNT(studentID) = 2
) a

有多少学生单独注册了服务“a”和服务“c”。

SELECT COUNT(*)
FROM
(
    SELECT studentID
    FROM   tableName
    WHERE  Service IN ('A', 'C')
    GROUP BY StudentID
    HAVING COUNT(studentID) = 2
) a
于 2012-08-22T15:55:47.663 回答
0

关于什么:

select COUNT(t.STUDENTID)
from 
(select studentid, service  from table group by STUDENTID having COUNT(service) = 2) as t
WHERE t.service = 'a'
于 2012-08-22T15:42:32.053 回答
0

您可以自行加入

SELECT COUNT(DISTINCT studentid) n
FROM      table t1
LEFT JOIN table t2 on (t1.studentid = t2.studentid)
WHERE t1.service = 'a' AND t2.service <> 'a'

或者如果你想了解学生...

SELECT studentid, SUM(IF(service = 'a',1,0)) n_a, SUM(IF(service = 'a',0,1)) n_other
FROM table
GROUP BY studentid
HAVING n_a = 1 AND n_other >= 1
于 2012-08-22T15:46:20.477 回答