显示每个类别的记录数

时间:2019-02-08 02:56:12

标签: sql oracle group-by aggregate-functions

我是论坛的新手,请多多包涵,并让我知道是否有任何不清楚的地方。谢谢。

  

表格:BB_BB60_COURSE_MAIN

     

使用的字段:BATCH_UID,COURSE_ID

     

条件:COURSE_ID包含关键字“ 2018”


  

表格:BB_BB60_COURSE_USERs

     

使用的字段:ROLE,ROW_STATUS

     

条件:ROLE =“ S”(学生),ROW_STATUS = 0(启用)


  

表格:BB_BB60_USERS

     

使用的字段:USER_ID

我需要针对两种不同的方法运行查询。

  1. 列出2018年每个课程ID的学生注册数量(启用)
  2. 列出2018年每个用户ID(学生)的课程注册数(已启用)

我已经查询了第一个

SELECT 
    BB_BB60_COURSE_MAIN.BATCH_UID, 
    BB_BB60_COURSE_MAIN.COURSE_ID, 
    BB_BB60_COURSE_USERS.ROW_STATUS, 
    BB_BB60_COURSE_USERS.ROLE, 
    Count(BB_BB60_COURSE_USERS.USERS_PK1) AS NoOfEnrol
FROM 
    (BB_BB60_COURSE_USERS INNER JOIN BB_BB60_COURSE_MAIN ON BB_BB60_COURSE_USERS.CRSMAIN_PK1 = BB_BB60_COURSE_MAIN.PK1) 
    INNER JOIN BB_BB60_USERS ON BB_BB60_COURSE_USERS.USERS_PK1 = BB_BB60_USERS.PK1
WHERE 
    (((BB_BB60_COURSE_MAIN.COURSE_ID) Like "%2018%") AND 
    ((BB_BB60_COURSE_USERS.ROLE)="S") AND 
    ((BB_BB60_COURSE_USERS.ROW_STATUS)=0))
GROUP BY 
    BB_BB60_COURSE_MAIN.BATCH_UID, BB_BB60_COURSE_MAIN.COURSE_ID, 
    BB_BB60_COURSE_USERS.ROW_STATUS, BB_BB60_COURSE_USERS.ROLE
ORDER BY 
    BB_BB60_COURSE_MAIN.COURSE_ID;

这是结果的一部分:

BATCH_UID       COURSE_ID      ROW_STATUS    ROLE        NoOfEnrol
13july_2018_T2  13july_2018_T2     0          S             3
149301_2018_FY  149301_2018_FY     0          S             1
210011_2018_01  210011_2018_01     0          S             1
210011_2018_02  210011_2018_02     0          S             7
410401_2018_02  410401_2018_02     0          S             19
510151_2018_02  510151_2018_02     0          S             10
510998_2018_FY  510998_2018_FY     0          S             234
516001_2018_01  516001_2018_01     0          S             28
516009_2018_01  516009_2018_01     0          S             1
516024_2018_02  516024_2018_02     0          S             20
516557_2018_01  516557_2018_01     0          S             12

我陷入第二个查询中,有人可以帮忙吗? 非常感谢

1 个答案:

答案 0 :(得分:0)

您的第二个查询将是:

SELECT  
    BB_BB60_COURSE_USERS.USER_ID,
    BB_BB60_COURSE_USERS.ROW_STATUS, 
    BB_BB60_COURSE_USERS.ROLE, 
    Count(BB_BB60_COURSE_MAIN.COURSE_ID) AS NoOfEnrol
FROM 
    (BB_BB60_COURSE_USERS INNER JOIN BB_BB60_COURSE_MAIN ON BB_BB60_COURSE_USERS.CRSMAIN_PK1 = BB_BB60_COURSE_MAIN.PK1) 
    INNER JOIN BB_BB60_USERS ON BB_BB60_COURSE_USERS.USERS_PK1 = BB_BB60_USERS.PK1
WHERE 
    (((BB_BB60_COURSE_MAIN.COURSE_ID) Like "%2018%") AND 
    ((BB_BB60_COURSE_USERS.ROLE)="S") AND 
    ((BB_BB60_COURSE_USERS.ROW_STATUS)=0))
GROUP BY 
    BB_BB60_COURSE_USERS.USER_ID, 
    BB_BB60_COURSE_USERS.ROW_STATUS, BB_BB60_COURSE_USERS.ROLE
ORDER BY 
    BB_BB60_COURSE_MAIN.COURSE_ID;