我有一个表(参与者),它有多个列可以是不同的。 在此查询中特别感兴趣的两列是userID和programID 我在这里有两个问题。
我希望能够获取所有programID的计数,其中相同的userID出现在多个programID中。 (I.E.在2个程序中出现相同userID的程序数,3个程序中出现相同USErID的程序数等等) 例如:
programID: prog1
userID: uid1
userID: uid3
userID: uid12
programID: prog2
userID: uid3
userID: uid5
userID: uid14
userID: uid27
programID: prog3
userID: uid3
userID: uid7
userID: uid14
userID: uid30
programID: prog4
userID: uid1
预期结果: userID count = 2;程序= 3 userID count = 3; program = 3
任何人都可以帮助我。
我目前的问题1的代码是:
SELECT
WPP.USERID,
WPI.EMAIL,
WPI.FIRSTNAME,
WPI.LASTNAME,
WPI.INSTITUTION
FROM WEBPROGRAMPARTICIPANTS WPP
INNER JOIN WEBPERSONALINFO WPI
ON WPP.USERID = WPI.USERID
INNER JOIN WEBPROGRAMS WP
ON WPP.PROGRAMCODE = WP.PROGRAMCODE
WHERE
WP.PROGRAMTYPE IN ('1','2','3','4','5','6', '9', '10')
GROUP BY
WPP.USERID,
WPI.EMAIL,
WPI.FIRSTNAME,
WPI.LASTNAME,
WPI.INSTITUTION
HAVING COUNT(WPP.USERID) > 1
ORDER BY WPI.EMAIL
答案 0 :(得分:2)
1
select userID , SUM(userID ) AS Count
from Preparations
group by userID where Count > 1
答案 1 :(得分:0)
您对第一部分的查询看起来不错。这是您对第2部分的查询:
SELECT DISTINCT p1.programID, COUNT(p1.userID) AS Multiple
FROM participants p1
JOIN participants p2 ON p2.userID = p1.userID
GROUP BY p1.userID, programID
ORDER BY Multiple, programID
它列出了programID和每个programID中相同userID出现的其他programID的数量。我认为您的预期结果对于您的样本数据是错误的。它应该是:
userID count = 1; program = 3; userID count = 2; program = 4; userID count = 3; program = 3;
如果您希望将结果微调以使其看起来更像您的预期结果,则可以将上述内容用作子查询(派生表)。
答案 2 :(得分:0)
这是我身上的一个问题,其逻辑步骤被遗漏了。