Group by course name then by begin date
SQL> create table registrations 2 ( attendee NUMBER(4) 3 , course VARCHAR2(6) 4 , begindate DATE 5 , evaluation NUMBER(1) 6 , constraint R_PK primary key (attendee,course,begindate) 7 ) ; Table created. SQL> SQL> insert into registrations values (2,'SQL',date '2009-04-12',4 ); 1 row created. SQL> insert into registrations values (14,'SQL',date '2009-04-12',5 ); 1 row created. SQL> insert into registrations values (6,'SQL',date '2009-04-12',4 ); 1 row created. SQL> insert into registrations values (11,'SQL',date '2009-04-12',2 ); 1 row created. SQL> insert into registrations values (8,'SQL',date '2009-10-04',NULL); 1 row created. SQL> insert into registrations values (9,'SQL',date '2009-10-04',3 ); 1 row created. SQL> insert into registrations values (13,'SQL',date '2009-10-04',4 ); 1 row created. SQL> insert into registrations values (13,'SQL',date '2009-12-13',NULL); 1 row created. SQL> insert into registrations values (6,'SQL',date '2009-12-13',NULL); 1 row created. SQL> insert into registrations values (3,'OAU',date '2009-08-10',4 ); 1 row created. SQL> insert into registrations values (12,'OAU',date '2009-08-10',4 ); 1 row created. SQL> insert into registrations values (13,'OAU',date '2009-08-10',5 ); 1 row created. SQL> SQL> select r.course, r.begindate 2 , count(r.attendee) as attendees 3 from registrations r 4 group by r.course, r.begindate; COURSE BEGINDATE ATTENDEES ------ ---------- ---------- OAU 10-08-2009 3 SQL 12-04-2009 4 SQL 04-10-2009 3 SQL 13-12-2009 2 SQL> SQL> drop table registrations; Table dropped.