表是
SUPERVISION (ResNo, ActivityID, SupervisorID, Day, Time)
我做过类似的事但是错了
SELECT COUNT(S.Res, S.ActivityID) AS PopularActivities
FROM Supervision S
WHERE rownum = 2;
ORDER BY COUNT(*) DESC;
或
SELECT S.ResNo, S.ActivityID
FROM Supervision S
WHERE (rank() over (order by count(*) DESC) as RNK
from Supervision S) AND rnk = 2;
答案 0 :(得分:0)
您需要将其放在子查询中:
SELECT *
FROM (
SELECT
ActivityID, COUNT(*) AS Cnt
FROM Supervision
GROUP BY ActivityID
ORDER BY Cnt DESC
) t
WHERE rownum <= 2
或者,您可以使用RANK
来获得相同的结果:
SELECT *
FROM (
SELECT
ActivityID,
RANK() OVER(PARTITION BY ActivityID ORDER BY COUNT(*) DESC) AS rnk
FROM Supervision
GROUP BY ActivityID
) t
WHERE rnk <= 2
答案 1 :(得分:0)
对我而言,我所做的就是:
ORDER BY TIME DESC
答案 2 :(得分:0)
试试这个
SELECT *
FROM (
SELECT
ActivityID, COUNT(*) AS top
FROM Supervision
GROUP BY ActivityID
ORDER BY top DESC
) t
limit 0,2
答案 3 :(得分:0)
您希望在所有预订中进行两项最受欢迎的活动。
这意味着您要计算每种活动类型的预订,并取两次最高计数。
另一种说法是,您希望按活动对预订进行分组,计算它们,对结果进行逐渐降序排序,并采取前两个
看起来您使用的是Microsoft TSQL语法,因此它应如下所示:
SELECT TOP 2 ActivityID, COUNT(*)
FROM SUPERVISION
GROUP BY ActivityID
ORDER BY COUNT(*) DESC