Cover | Table of Contents | Colophon
|
Entity Name
|
Description
|
|---|---|
|
EMPLOYEE
|
Contains one record for each employee. This record contains the
employee's name, hire date, termination date, and billing rate.
The primary key is an arbitrary employee ID number. The termination
date for current employees is set to NULL.
|
|
PROJECT
|
SQL> EXIT
Disconnected from Personal Oracle8 Release 8.0.3.0.0 - Production
With the Partitioning option
PL/SQL Release 8.0.3.0.0 - Production
PASSWORD [username]
SQL> SELECT * /* All Columns */ 2 FROM project; PROJECT_ID PROJECT_NAME PROJECT_BUDGET ---------- ---------------------------------------- -------------- 1001 Corporate Web Site 1912000 1002 Year 2000 Fixes 999998000 1003 Accounting System Implementation 897000 1004 Data Warehouse Maintenance 294000 1005 TCP/IP Implementation 415000
DECLARE
X VARCHAR2(12) := 'Hello World!';
BEGIN
DBMS_OUTPUT.PUT_LINE(X);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred.');
END;
SQL> SELECT employee_name, project_name 2 FROM employee, project, project_hours 3 WHERE employee.employee_id = project_hours.employee_id 4 AND project_hours.project_id = project.project_id 5 GROUP BY employee_name, project_name 6 SQL>
SQL> L
1 SELECT employee_name, project_name
2 FROM employee, project, project_hours
3 WHERE employee.employee_id = project_hours.employee_id
4 AND project_hours.project_id = project.project_id
5* GROUP BY employee_name, project_name
SQL> /
EMPLOYEE_NAME PROJECT_NAME
---------------------------------------- ----------------------------------
Bohdan Khmelnytsky Accounting System Implementation
Bohdan Khmelnytsky Corporate Web Site
Bohdan Khmelnytsky Data Warehouse Maintenance
Bohdan Khmelnytsky TCP/IP Implementation
Bohdan Khmelnytsky Year 2000 Fixes
...
SQL> R
1 SELECT employee_name, project_name
2 FROM employee, project, project_hours
3 WHERE employee.employee_id = project_hours.employee_id
4 AND project_hours.project_id = project.project_id
5* GROUP BY employee_name, project_name
EMPLOYEE_NAME PROJECT_NAME
---------------------------------------- -----------------------------------
Bohdan Khmelnytsky Accounting System Implementation
Bohdan Khmelnytsky Corporate Web Site
Bohdan Khmelnytsky Data Warehouse Maintenance
Bohdan Khmelnytsky TCP/IP Implementation
Bohdan Khmelnytsky Year 2000 Fixes
...SAVE filename [CREATE|REPLACE|APPEND]
ED[IT] [filename]
SQL> SELECT project_name 2 FROM projects 3 WHERE project_id in ( 4 SELECT DISTINCT project_id 5 FROM project_hours) 6 SQL> EDIT Wrote file afiedt.buf
START filename [arg1 arg2 arg3...]
DESCRIBE employee DESCRIBE project DESCRIBE project_hours
SQL> START C:\JONATHAN\SQL_PLUS_BOOK\XB_CH_2\DESCRIBE_ALL
Name Null? Type
------------------------------- -------- ----
EMPLOYEE_ID NOT NULL NUMBER
EMPLOYEE_NAME VARCHAR2(40)
EMPLOYEE_HIRE_DATE DATE
EMPLOYEE_TERMINATION_DATE DATE
EMPLOYEE_BILLING_RATE NUMBER
Name Null? Type
------------------------------- -------- ----
PROJECT_ID NOT NULL NUMBER
PROJECT_NAME VARCHAR2(40)
PROJECT_BUDGET NUMBER
Name Null? Type
------------------------------- -------- ----
PROJECT_ID NOT NULL NUMBER
EMPLOYEE_ID NOT NULL NUMBER
TIME_LOG_DATE NOT NULL DATE
HOURS_LOGGED NUMBER
DOLLARS_CHARGED NUMBER
SELECT E.EMPLOYEE_NAME,
P.PROJECT_NAME,
SUM(PH.HOURS_LOGGED) ,
SUM(PH.DOLLARS_CHARGED)
FROM EMPLOYEE E,
PROJECT P,
PROJECT_HOURS PH
WHERE E.EMPLOYEE_ID = PH.EMPLOYEE_ID
AND P.PROJECT_ID = PH.PROJECT_ID
GROUP BY E.EMPLOYEE_ID, E.EMPLOYEE_NAME,
P.PROJECT_ID, P.PROJECT_NAME;
EMPLOYEE_NAME PROJECT_NAME
---------------------------------------- ------------------------------------
SUM(PH.HOURS_LOGGED) SUM(PH.DOLLARS_CHARGED)
-------------------- -----------------------
Jonathan Gennick Corporate Web Site
20 3380
Jonathan Gennick Year 2000 Fixes
24 4056
Jonathan Gennick Accounting System Implementation
24 4056—Set up pagesize parameters
SET NEWPAGE 0
SET PAGESIZE 55
—Set the linesize, which must match the number of equals signs used
—for the ruling lines in the headers and footers.
SET LINESIZE 77
—Set up page headings and footings
TTITLE CENTER 'The Fictional Company' SKIP 3 -
LEFT 'I.S. Department' -
RIGHT 'Project Hours and Dollars Detail' SKIP 1 -
LEFT '========================================' -
'====================================' -
SKIP 2
BTITLE LEFT '========================================' -
'====================================' -
SKIP 1 -
RIGHT 'Page ' FORMAT 999 SQL.PNO
—Format the columns
COLUMN employee_id HEADING 'Emp ID' FORMAT 9999
COLUMN employee_name HEADING 'Employee Name' FORMAT A16 WORD_WRAPPED
COLUMN project_id HEADING 'Proj ID' FORMAT 9999
COLUMN project_name HEADING 'Project Name' FORMAT A12 WORD_WRAPPED
COLUMN time_log_date HEADING 'Date' FORMAT A11
COLUMN hours_logged HEADING 'Hours' FORMAT 9,999
COLUMN dollars_charged HEADING 'Dollars|Charged' FORMAT $999,999.99
—Execute the query to generate the report.
SELECT E.EMPLOYEE_ID,
E.EMPLOYEE_NAME,
P.PROJECT_ID,
P.PROJECT_NAME,
TO_CHAR(PH.TIME_LOG_DATE,'dd-Mon-yyyy') time_log_date,
PH.HOURS_LOGGED,
PH.DOLLARS_CHARGED
FROM EMPLOYEE E,
PROJECT P,
PROJECT_HOURS PH
WHERE E.EMPLOYEE_ID = PH.EMPLOYEE_ID
AND P.PROJECT_ID = PH.PROJECT_ID
ORDER BY E.EMPLOYEE_ID, P.PROJECT_ID, PH.TIME_LOG_DATE;
The Fictional Company
I.S. Department Project Hours and Dollars Detail
=============================================================================
Dollars
Emp ID Employee Name Proj ID Project Name Date Hours Charged
------ ---------------- ------- ---------------- ----------- ------ ---------
101 Jonathan Gennick 1001 Corporate Web 01-Jan-1998 1 $169.00
Site
101 Jonathan Gennick 1001 Corporate Web 01-Mar-1998 3 $507.00
Site
101 Jonathan Gennick 1001 Corporate Web 01-May-1998 5 $845.00
Site
101 Jonathan Gennick 1001 Corporate Web 01-Jul-1998 7 $1,183.00
Site
101 Jonathan Gennick 1001 Corporate Web 01-Sep-1998 1 $169.00
Site
101 Jonathan Gennick 1001 Corporate Web 01-Nov-1998 3 $507.00
Site
101 Jonathan Gennick 1002 Year 2000 Fixes 01-Feb-1998 7 $1,183.00
101 Jonathan Gennick 1002 Year 2000 Fixes 01-Apr-1998 1 $169.00
101 Jonathan Gennick 1002 Year 2000 Fixes 01-Jun-1998 3 $507.00
101 Jonathan Gennick 1002 Year 2000 Fixes 01-Aug-1998 5 $845.00
101 Jonathan Gennick 1002 Year 2000 Fixes 01-Oct-1998 7 $1,183.00
101 Jonathan Gennick 1002 Year 2000 Fixes 01-Dec-1998 1 $169.00COMP[UTE] [{AVG|COU[NT]|MAX[IMUM]|MIN[IMUM]|
NUM[BER]|STD|SUM|VAR[IANCE]}... [LABEL label_text]
OF column_name...
ON {group_column_name|ROW|REPORT}...]
SELECT DISTINCT p.project_id, p.project_name
FROM project p,
project_hours ph
WHERE ph.employee_id = 107
AND p.project_id = ph.project_id;
SELECT DISTINCT p.project_id, p.project_name
FROM project p,
project_hours ph
WHERE ph.employee_id = &employee_id
AND p.project_id = ph.project_id;