Hey, I am studying database in school and I have to write the following query:

Build a SQL statement which shows the project name, the employee name and the hours that each employee has worked on a project as well as the subtotal of hours worked for each project and the grand total for all projects.

Bellow are the tables I have and my attempt at the query:
Code:
create table employees
    (
       emp_id char(9) not null,
       fname varchar2(10) not null,
       lname varchar2(10) not null,
       bdate date,
       street varchar2(15),
       city varchar2(10),
       prov char(3),
       sex char(1),
       salary number(8,2),
       dept_no number(2),
       super_id char(9),
       constraint pk_employees_emp_id primary key(emp_id),
       constraint fk_employees_super_id foreign key(super_id) 
         references employees(emp_id)
    );

create table projects
    (
       proj_no number(2) not null,
       proj_name varchar2(15) not null,
       proj_loc varchar2(15),
       dept_no number(2),
       constraint pk_projects_proj_no primary key(proj_no),
       constraint fk_projects_dept_no foreign key(dept_no)
       references departments(dept_no)
   );

create table works_on
    (
       emp_id char(9),
       proj_no number(2),
       hours number(3,1),
       constraint pk_works_on_emp_id_proj_no primary key(emp_id,proj_no),
       constraint fk_works_on_emp_id foreign key(emp_id)
       references employees(emp_id),
       constraint fk_works_on_proj_no foreign key(proj_no)
       references projects(proj_no)
   );

Select proj_name,fname,lname, hours, sum(hours)
FROM employees
INNER JOIN works_on on employees.emp_id = works_on.emp_id
INNER JOIN projects on works_on.proj_no = projects.proj_no
GROUP BY ROLLUP (proj_name,fname,lname)
ORDER BY proj_name,fname,lname,hours;
I am not quite sure what it is I am doing incorrectly but the output I am getting has 38 rows of data. If you could help me out it'd be greatly appreciated.
Thanks,
-Terminionaus