SQL
SQL
DML COMMANDS ---> THEY INTERACT WITH BUFFER AND THEN COMMIT --> DATA WILL BE ENTER
INTO DATABASE
---> IF WE ROLLBACK BEFORE COMMIT THE DATA WILL BE RREMOVED DIRECTLY
FROM BUFFER
--->WE CAN PERFORM ROLLBACK/UNDO OPERATION
--->TWO CATAGORIES ---> READ ---> SELECT
---> WRITE ---> INSERT
UPDATE
MERGE ---> USED TO PERFORM INSERT
AND UPDATE OPERATIONS
DELETE
|----------------------------------------------------------------------------------
--------------------|
| DELETE |
TRUNCATE |
-----------------------------------------------------------------------------------
--------------------
| |
|
| DML COMMAND | DDL
COMMAND |
| |
|
| ROLLBACK POSSIBLE |
ROLLBACK NOT POSSIBLE |
| |
|
| IMPLICIT COMMIT NOT POSSIBLE |
IMPLICIT COMMIT POSSIBLE |
| |
|
| ALL ROWS OF TABLE CAN BE DELETED | ALL
ROWS OF TABLE CAN BE TRUNCATED |
| |
|
| SINGLE ROW CAN BE DELETED |
SINGLE ROW CANNOT BE TRUNCATED |
| |
|
| MULTIPLE ROWS CAN BE DELETED |
MULTIPLE ROWS CANNOT BE TRUNCATED |
| |
|
| WHERE CLAUSE CAN BE USED |
WHERE CLAUSE CANNOT BE USED |
| |
|
| TRIGGER UPTO O8i CAN BE CREATED |
TRIGGER UPTO O8I WILL NOT CREATED |
| |
|
| TRIGGER FROM O9i CAN BE CREATED |
TRIGGER FROM O9I CAN BE CREATED |
| |
|
| SPACE WILL NOT BE RELEASED |
SPACE WILL BE RELEASED |
| |
|
| PERFORMANCE IS SLOW |
PERFORMANCE IS FAST |
-----------------------------------------------------------------------------------
---------------------
SHOW USER;
SHOW USER;
CREATEING ROLES:
CREATE ROLE <ROLE_NAME>;
SET ROLE:
---> COMMIT
ROLLBACK
SAVEPOINT
SET TRANSACTION
COMMIT:
SQL> INSERT
SQL> UPDATE
SQL> COMMIT --- EXPLICIT
SQL> INSERT
SQL> ALTER --- IMPLICIT
SQL> INSERT
SQL> COMMIT --- EXPLICIT
SQL> INSERT
SQL> DELETE
SQL> DROP --- IMPLICIT
SQL> INSERT
SQL> DELETE
SQL> SELECT
SQL> COMMIT --- EXPLICIT
SQL> INSERT
SQL> INSERT
SQL> ROLLBACK; --- EXPLICIT
SQL> INSERT
SQL> UPDATE
SQL> ROLLBACK; --- EXPLICIT
SQL> DELETE
SQL> INSERT
SQL> ROLLBACK; --- EXPLICIT/ ROLL - NO SEMICOLON
SQL> INSERT
SQL> SELECT
SQL> UPDATE
SQL> Alt + F4 --- IMPLICIT
SQL> INSERT
SQL> INSERT
SQL> SAVEPOINT <SAVEPOINT_NAME1>;
SQL> DELETE
SQL> SELECT
SQL> INSERT
SHOW NUMWIDTH;
SHOW RELEASE;
SHOW LONG;
ROWID: ---> ALLLOW 18 BIT LONG ROWID VALUES THAT CORRESPOND TO ORACLE
TABLE ROWIDs
---> TO SUPPORT ROWID VALUES
---> A SUDO-COLUMN
---> TWO TYPES --> RESTRICTED ROWID
--> EXTENDED ROWID
---> SIZE IS FIXED
--->
TIMESTAMP[(P)] WITH TIME ZONE: ---> ALLOWS DATE, TIME AND TIME ZONE
---> P IS THE PRECISION, WHICH IS
FUNCTIONAL PART OF SECONDS
---> DEFAULT P IS 6 AND RANGE OF P IS 0
- 9
---> DISPLAY FORMAT: DD-MON-YY
HH.MI.SS.FF AM +TZH:TZM
TIMESTAMP[(P)] WITH LOCAL TIME ZONE: ---> ALLOWS DATE, TIME AND TIME
ZONE
---> P IS THE PRECISION, WHICH IS
FUNCTIONAL PART OF SECONDS
---> DEFAULT P IS 6 AND RANGE OF
P IS 0 - 9
---> DISPLAY FORMAT: DD-MON-YY
HH.MI.SS.FF AM
SQL CLAUSES: ---> TWO TYPES --> OPTIONAL CLAUSES --> WHERE, GROUP BY, HAVING,
ORDER BY, CONNECT BY
--> MANDATORY CLAUSES --> SELECT, FROM
---> SELECT
FROM
WHERE --> RESTRICTING ROWS
GROUP BY --> FORMING GROUPS
HAVING --> RESTRICTING GROUPS
ORDER BY --> SORTING
SQL FUNCTIONS: ---> A DB OBJECT WHICH WILL RETURN A VALUE IN DEFINE DATATYPE VALUE.
---> SINGLE ROW FUNCTIONS ACCEPT ARGUMENTS AND RETURN ONE VALUE
---> SINGLE ROW FUNCTIONS ACT ON EACH ROW AND RETURN ONE RESULT PER
ROW
---> SINGLE ROW FUNCTIONS CAN BE NESTED UP TO ANY LEVEL
---> MULTIPLE ROW FUNCTIONS CAN BE NESTED UP TO TWO LEVELS
---> MULTIPLE ROW FUNCTIONS ACT ON GROUP OF ROWS AND RETURN ONE
RESULT PER GROUP
---> FOR NESTED FUNCTION ---> INNER TO OUTER ---> EVALUATED
---> TYPE OF FUNCTION --> CHARACTER FUNCTIONS
NUMBER FUNCTIONS
DATE FUNCTIONS
CONVERSION FUNCTIONS
GENERAL FUNCTIONS
TIMESTAMP FUNCTIONS(O9i)
REGEXP_REPLACE
REGEXP_COUNT
REGEXP_LIKE
REGEXP_SUBSTR
SHOW NUMWIDTH;
SET NUMWIDTH <NUM>;
SET NUMFORMAT <XXX>;
----------------------X-------------<--------|
| |
---------TO_CHAR----->-<------TO_CHAR--------
| | |
| | |
NUMBER ------ CHAR ------ DATE
| | |
| | |
X-<--TO_NUMBER--------|-->---TO_DATE------X--|
| |
| |
------------------------>-------X------------|
NOT NULL:
--> DOES NOT ALLOW NULL VALUES
--> CAN BE DEFINED ON ONE COLUMN ONLY
--> CAN BE DEFINED AT COLUMN LEVEL ONLY
CHECK:
--> ALLOW ONLY VALID RANGE OF VALUES
--> CAN BE DEFINED ON ONE COLUMN ONLY
--> CAN BE DEFINED AT COLUMN LEVEL OR TABLE LEVEL
DEFAULT:
--> NOT A CONSTRAINT TECHNICALLY
--> USED TO PROVIDE A DEFAULT VALUE OF COLUMN
--> DEFAULT VALUE IS ADDED TO ALL NEW RECORDS IF NO OTHER
VALUE IS SPECIFIED
--> DEFAULT HAS HIGHEST PRIORITY
UNIQUE:
--> DOES NOT ALLOW DUPLICATE VALUES
--> ALLLOW NULL VALUES(ANY NUMBER OF NULL VALUES)
--> CAN BE DEFINED ON ONE/ MORE COLUMNS(COMPOSITE KEY)
--> CAN BE DEFINED AT COLUMN LEVEL OR TABLE LEVEL
--> UNIQUE INDEX WILL BE CREATED
PRIMARY KEY:
--> DOES NOT ALLOWED DUPLICATE VALUES AND NULL VALUES
--> CAN BE DEFINED ON ONE/ MORE COLUMNS(COMPOSITE
KEY)
--> CAN BE DEFINED AT COLUMN/ TBALE LEVEL
--> A UNIQUE INDEX WILL BE CREATED ON PRIMARY KEY
COLUMN
--> ONLY ONE PRIMARY KEY PER TABLE IS ALLOWED.
ENAME VARCHAR(5),
MGR VARCHAR(5),
SAL NUMBER,
DEPTNO NUMBER
);
--> TABLE CREATED
SQL OPERATORS:
--> IF ANY OPERATOR RECEIVES A NULL, THE RESULT IS ALWAYS NULL. THE
ONLY OPERATOR THAT DOES NOT FOLLOW THIS RULE IS CONCAT
BINARY OPERATORS:
--> BINARY OPERATOR USES BETWEEN TWO OPERANDS
--> * - MULTIPLICATION
--> / - DIVISION
--> + - ADDITION
--> - - SUBTRACTION
--> *,/ HIGH PRIORITY AND +, - HAS LEAST PRIORTY,
*, / --> PRIORITY - LEFT TO RIGHT AND TOP TO BOTTOM
--> || - CONCATENATION
--> = - EQUAL TO
--> !=, <>, ~=, ^= - NOT EQUAL TO
--> > - GREATER THAN
--> >= - GREATER THAN OR EQUAL TO
--> < - LESS THAN
--> <= - LESS THAN OR EQUAL TO
SET OPERATORS:
SQL SUBQUERIES: --> SUBQUERY IS ALSO CALLED AS NESTED QUERY OR INNER QUERY
--> A WHERE CLAUSE OF ONE QUERY MAY CONTAIN ANOTHER QUERY CALLED A
SUBQUERY
--> A SUBQUERY CAN RETRIEVE INFORMATION FROM MORE THAN ONE TABLE
--> CAN USE SUBQUERY INSIDE INSERT, UPDATE, AND DELETE STATEMENT
CORRELATED SUBQUERIES
NESTED SUBQUERIES
INLINE VIEW
SEQUENCE
SYNONYM
INDEX
TYPE
OBJECT TABLE
NESTED TABLE
MATERIALIZED VIEW
PARTITIONED TABLE
EXTERNAL TABLE
CLUSTERD TABLE
COMPRESSED TABLE
XML TABLE
COMPLEX VIEW
FORCED VIEW
VIEW WORKING: --> HOW VIEW GET DATA FROM BASE TABLE
--> MINVALUE - 1
--DEFAULT
--> CYCLE -
NOCYCLE --DEFAULT
--> CACHE - 20
--DEFAULT
SYNONYM DB OBJECTS:
--> SYNONYM IS AN ALIAS OR ALTERNATE NAME OF
AN OBJECTS
POSSIBILITY OF SYNONYMS:
EXAMPLES:
INDEX A DB OBJECT:
--> INDEX ARE SPECIAL LOOKUP TABLES THAT THE
DATABASE SEARCH ENGINE CAN BE USED TO SPEED UP DATA RETRIEVAL
TYPES OF INDEXES:
1. B-TREE INDEX: BALANCED FULLY/
PARTIALLY BALANCED
UNBALANCED
--> NORMAL
INDEX/GLOBAL INDEX
2. BITMAP INDEX:
--> LIMITATION:
UPDATING TABLE
EXAMPLES:
2. ASCENDING/DESCENDING INDEX:
3. UNIQUE INDEX:
4. LOCAL INDEX:
5. COMPOSITE INDEX:
9. CLUSTERED INDEX:
EXAMPLES:
EXAMPLES:
EXAMPLES:
SQL> CREATE OR REPLACE TYPE
PROJECT_TYPE AS OBJECT
(NAME VARCHAR(50),
ROLE VARCHAR(20)
);
/
(ID NUMBER,
COL1 MY_TAB
)
NESTED TABLE COL1 STORE
AS COL1_TAB;
EXAMPLES:
1. NORMAL TABLE:
SQL> CREATE TABLE T_NORMAL
(EMPNO NUMBER
ENAME VARCHAR(10)
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER
);
SQL> COMMIT;
2. HEAP TABLE:
SQL> CREATE TABLE T_HEAP
(EMPNO NUMBER,
ENAME VARCHAR(10),
SAL NUMBER
COMM NUMBER
DEPTNO NUMBER
) ORGANIZATION HEAP;
SQL> COMMIT;
4. EXTERNAL TABLE:
SQL> CREATE TABLE T_EXTERNAL
(EMPNO NUMBER
ENAME VARCHAR(5),
SAL NUMBER
COMM NUMBER
)
ORGANIZATION EXTERNAL
(DEFAULT DIRECTORY DIR1
ACCESS PARAMETERS
(RECORDS DELIMITED BY ';'
7. CLUSTERED TABLE:
SQL> COMMIT
8. OBJECT TABLE:
9. PL/SQL TABLE:
INSERT INTO
T_VIRTUAL(EMPNO, ENAME, SAL, COM1, COM2) VALUES(1, 'B', 2000, 10, 20);
INSERT INTO
T_VIRTUAL(EMPNO, ENAME, SAL, COM1, COM2) VALUES(1, 'A', 1000, 20, 40);
SYNTAX: -- Normal
CREATE MATERIALIZED
VIEW view-name
BUILD [IMMEDIATE |
DEFERRED]
REFRESH [FAST |
COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE]
QUERY REWRITE]
AS
SELECT ...;
-- Pre-Built
CREATE MATERIALIZED
VIEW view-name
ON PREBUILT TABLE
REFRESH [FAST |
COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE]
QUERY REWRITE]
AS
SELECT ...;
4. PIVOTING INSERT
EXAMPLES:
5. PIVOTAL INSERT:
SQL> COMMIT;
--> HAVING
ROLLUP
-- N + 1 NUMBER OF GROUPINGS WILL BE FORMED
CUBE
-- 2^n NUMBER OF GROUPING WILL BE FORMED
GROUPING
-- SPECIFIES WHETHER THE COLUMN IS USED FOR THE GROUPING IN THE RESULT
GROUPING SETS
COMPOSITE COLUMNS
CONCATINATED GROUPINGS
---COMPOSITE COLUMNS
---CONCATINATE COLUMNS
1. RANGE PARTITION --
DATATYPES ALLOWED: NUMBER, CHAR, VARCHAR, DATE, TIMESTAMP, INTERVAL LITERAL,
MAXVALUE
2. LIST PARTITION --
DATATYPES ALLOWED: NUMBER, CHAR, VARCHAR, DATE, TIMESTAMP, INTERVAL LITERAL, NULL
3. HASH PARTITION --
DATATYPES ALLOWED: NUMBER, CHAR, VARCHAR, DATE, TIMESTAMP, INTERVAL LITERAL
4. COMPOSITE PARTITION --
SUB PARTITION
5. INTERVAL PARTITION --
DATATYPES ALLOWED: NUMBER, DATE, TIMESTAMP, INTERVAL LITERAL
6. REFERENCE PARTITION
7. SYSTEM PARTITION
9. INTERVAL-REFERENCE PARTITION
3. MOVE PARTITION -- TO
DIFFERENT TABLESPACE
4. RENAME PARTITION --
6. TRUNCATE PARTITION --
7. DELETE PARTITION --
EXAMPLES:
1. RANGE PARTITION:
--- SINGLE COLUMN (NUMBER)
WITHOUT MAXVALUE
2. LIST PARTITION:
--
SPECIFYING NUMBER OF PARTITIONS
SUBPARTITION TEMPLATE
SUBPARTITION TEMPLATE
SUBPARTITION TEMPLATE
(SUBPARTITION SP1,
SUBPARTITION SP2,
SUBPARTITION SP3
)
(PARTITION P1 VALUES LESS THAN
(10),
PARTITION P1 VALUES LESS THAN
(20),
PARTITION P1 VALUES LESS THAN
(MAXVALUE)
);
SUBPARTITION 3
(PARTITION P1 VALUES LESS THAN
(10),
PARTITION P1 VALUES LESS THAN
(20),
PARTITION P1 VALUES LESS THAN
(MAXVALUE)
);
SUBPARTITION TEMPLATE
SUBPARTITION TEMPLATE
SUBPARTITIONS 3
(PARTITION P1 VALUES ('A', 'B',
'C'),
PARTITION P1 VALUES ('E', 'D',
'F'),
PARTITION P1 VALUES ('X', 'Y',
'Z')
);
SUBPARTITION TEMPLATE
(SUBPARTITION SP1,
SUBPARTITION SP2,
SUBPARTITION SP3
)
(PARTITION P1 VALUES ('A', 'B',
'C'),
PARTITION P1 VALUES ('E', 'D',
'F'),
PARTITION P1 VALUES ('X', 'Y',
'Z')
);
6. REFERENCE PARTITION:
3. PARTITION MAINTAINANCE
OPERATIONS PERFORMED PERFORMED ON THE PARENT TABLE THAT ARE REFLECTED ON THE CHILD
TABLE,
7. SYSTEM PARTITION:
2. IF WE SPECIFY PARTITION BY
SYSTEM PARTITIONS n CLAUSE, THE DATABASE CREATES 'n' PARTITIONS WITH THE NAME IN
THE FORMAT OF 'SYS_Pn'.
DISCARDFILE <FILE_NAME>
LOGFILE
<FILE_NAME>
[READSIZE
<BYTES>]
[SKIP
<NUMBER OF ROWS>]
FIELDS
DELIMITED BY <TERMINATOR>
REJECT
ROWS WITH NULL FEILDS
MISSING
FEILD VALUES ARE NULL
(<COLUMN_NAME_LIST>)\ LOCATION('<FILE_NAME'>)
)
[PARALLEL]
REJECT LIMIT <UNLIMITED |
INTEGER>; ------DEFAULT REJECT LIMIT IS 0
SQL> CREATE
TABLE EMP_EXT1
(ENO
NUMBER,
ENAME
VARCHAR(5),
SAL
NUMBER,
COMM
NUMBER
)
ORGANIZATION EXTERNAL
(DEFAULT
DIRECTORY DIR1
ACCESS
PARAMETERS (RECORDS DELIMITED BY NEWLINE
)
LOCATION
(DIR1: 'ABC.TXT', DIR2:'ABC1.TXT')
)
REJECT
LIMIT UNLIMITED;
SQL> CREATE
TABLE EMP_EXT_PUMP
ORGANIZATION EXTERNAL
(TYPE
ORACLE_DATAPUMP
DEFAULT DIRECTORY
DIR1
LOCATION ('ABC.DMP')
)
AS SELECT
* FROM EMP_EXT;
SQL> SELECT *
FROM USER_EXTERNAL_LOCATIONS;
SQL> SELECT *
FROM USER_EXTERNAL_TABLES;
INTERNAL LOCKS
SHARE UPDATE
SQL> LOCK
TABLE SCOTT.EMP1 IN ROW SHARE MODE; --- MULTIPLE USERS
SQL> LOCK
TABLE SCOTT.EMP1 IN SHARE UPDATE MODE; --- MULTIPLE USERS
SQL> LOCK
TABLE SCOTT.EMP1 IN EXCLUSIVE MODE; --- ONLY ONE USER
SQL> LOCK
TABLE SCOTT.EMP1 IN ROW EXCLUSIVE MODE; --- MULTIPLE USERS
SQL> LOCK
TABLE SCOTT.EMP1 IN SHARE ROW EXCLUSIVE MODE; --- ONLY ONE USER
SQL> LOCK
TABLE SCOTT.EMP1 IN EXCLUSIVE MODE NOWAIT;
DEADLOCK IN ORACLE DB: --> HAPPENS BETWEEN
TWO SESSIONS
2. NEXTVAL
3. LEVEL
4. ROWID
5. ROWNUM
SQL>
SELECT * FROM EMP WHERE ROWNUM=1;
SQL>
SELECT DISTINCT MGR, EMPNO, LEVEL FROM EMP CONNECT BY PRIOR EMPNO=MGR;
SQL>
ELECT * FROM (SELECT * FROM EMPLOYEES ORDER BY EMPLOYEE_ID) WHERE ROWNUM < 11;
SQL>
SELECT ROWID, ENAME, DEPTNO, SAL FROM EMPLOYEE;
SQL>
CREATE SEQUENCE seq_2 INCREMENT BY 1 START WITH 1 MAXVALUE 50 MINVALUE 0 NOCYCLE
CACHE 20 ORDER;
RESTRICTED ROWID: --> 16 CHARACTER
LONG
--> HEXADECIMAL
NUMBER SYSTEM
--> VARCHAR2
REPRESENTATION
EXTENDED ROWID:
--> 18 CHARACTERS LONG
SQL>
SPOOL C:\DIR1\CSV_FILE.CSV;
SQL> SET
HEADING OFF;
SQL> SET
FEEDBACK OFF;
SQL> SET
TERMOUT OFF;
SQL> SET
PAGES 30 LINES 120;
SQL> SET
COLSEP ",";
SQL> SET
MARKUP HTML ON;
SQL>
PROMPT EMPLOYEE DETAILS;
SQL>
PROMPT ----------------;
SQL>
PROMPT ---------------------------;
SQL>
SELECT * FROM EMP;
SQL>
PROMPT ---------------------------;
SQL>
PROMPT DEPT DETAILS;
SQL>
PROMPT ------------;
SQL> SET
HEADING ON;
SQL> SET
FEEDBACK ON;
SQL> SET
TERMOUT ON;
SQL> SET
PAGES 14 LINES 80;
SQL> SET
COLSEP ' ';
SQL>
SPOOL OFF;
SQL> SET
MARKUP HTML OFF;
SQL>
@<FILE PATH>; ---- BATCH EXECUTION
SPECIAL TOPICS:
SQL>
INDERT INTO T_NULL VALUES('', '', '', '', '', '', '', '', '');
SQL>
INDERT INTO T_NULL VALUES(1, EMPTY_CLOB(), '', EMPTY_CLOB(), EMPTY_BLOB(),
EMPTY_CLOB(), EMPTY_CLOB(), EMPTY_CLOB, BFILENAME(NULL, NULL));
--> A
PUBLIC SYNONYM
-->
OWNER OF DUAL IS SYS
-->
NO NEED TO GRANT SPECIAL PERMISSIONS
-->
A DUMMY TABLE
-->
NAME OC COLUMN IS DUMMY AND DATATYPE IS VARCHAR2
-->
THE VALUE INSIDE THE DUEL IS X
-->
CAN PERFORM DDL, DML OPERATIONS WITH PRIVILEGES
-->
CAN BE USED FOR RETRIEVING SYSTEM VARIABLES, FUNCTIONS, EXPRESSIONS
SQL>
SELECT USERNAME FROM DBA_USERS ORDER BY 1;
SQL>
GRANT CONNECT, RESOURCE TO U4 IDENTIFIED BY U4;
SQL> SELECT
'LAXMI'S' FROM DUAL;
SQL>
SELECT 'LAXMI''S' FROM DUAL;
SQL>
SELECT Q'[LAXMI'S]' FROM DUAL;
SQL>
SELECT 'THIS IS ' || Q'[LAXMI'S]' ||' MOVIE' FROM DUAL;
\t - TAB -- 32
\n - NEW LINE -- 10
\r - CARRIAGE RETURN -- 13
SQL>
SELECT 'ABC&ABC' FROM DUAL;
SQL> SHO
DEFINE
SQL> SET
DEFINE OFF;
SQL> SHOW
DEFINE
SQL>
SELECT 'ABC'||CHR(38)||'ABC' FROM DUAL;
SQL>
SELECT ASCII('&') FROM DUAL;
SQL>
SELECT ASCII(' ') FROM DUAL;
SQL> FLASHBACK
TABLE <TABLE_NAME> TO BEFORE DROP;
SQL> PURGE
TABLE <TABLLE_NAME>;
SQL> PURGE
RECYCLEBIN;
--> TO IMPROVE
PERFORMANCE
-->
EXCEPTIONNAL STATEMENT WHICH START WITH CLAUSE WITH BUT NOT COMMAND
SQL> SELECT
DEPTNO, SUM(SAL) TOTAL_SAL FROM EMP GROUP BY DEPTNO;
SQL> SELECT
AVG(TOTAL_SAL) FROM (SELECT DEPTNO, SUM(SAL) TOTAL_SAL FROM EMP GROUP BY DEPTNO);
SQL> SELECT
DEPTNO, TOTAL_SAL FROM (SELECT DEPTNO, SUM(SAL)TOTAL_SAL FROM EMP GROUP BY DEPTNO)
GROUP BY
DEPTNO, TOTAL_SAL HAVING TOTAL_SAL > (SELECT AVG(TOTAL_SAL) FROM
(SELECT
DEPTNO, SUM(SAL) TOTAL_SAL FROM EMP GROUP BY DEPTNO));
SQL> WITH Q1 AS
(SELECT DEPTNO, SUM(SAL) TOTAL_SAL FROM EMP GROUP BY DEPTNO;
Q2 AS
(SELECT AVG(Q1.TOTAL_SAL)AVG_SAL FROM Q1)
SELECT
Q1.DEPTNO AS DEPTNO, Q1.TOTAL_SAL AS TOTAL_SAL
FROM
Q1, Q2 WHERE Q1.TOTAL_SAL > Q2.AVG_SAL;
--> RANK
DENSE_RANK
ROW_NUMBER
COUNT
LAG -- RETURN
PREVIOUS VALUE
LEAD -- RETURN NEXT
VALUE
FIRST_VALUE
LAST_VALUE
FIRST
LAST
1. RANK:
SQL> SELECT
DEPARTMENT_ID, COUNT(*)
FROM
EMPLOYEES
GROUP
BY DEPARTMENT_ID
ORDER
BY 1;
SQL> SELECT
DEPARTMENT_ID, SALARY, RANK() OVER
(PARTITION
BY DEPARTMENT_ID ORDER BY SALARY DESC)
RANK
FROM EMPLOYEES
GROUP
BY DEPARTMENT_ID, SALARY;
SQL> SELECT *
FROM
(SELECT
DEPARTMENT_ID, SALARY, RANK() OVER
(PARTITION
BY DEPARTMENT_ID ORDER BY SALARY DESC)
RANK
FROM EMPLOYEES
GROUP
BY DEPARTMENT_ID, SALARY)
WHERE
RANK <= 2;
SQL> SELECT *
FROM
(SELECT
DEPARTMENT_ID, SALARY, RANK() OVER
(PARTITION
BY DEPARTMENT_ID ORDER BY SALARY DESC)
RANK
FROM EMPLOYEES)
ORDER
BY DEPARTMENT_ID;
2. DENSE_RANK:
SQL> SELECT *
FROM
(SELECT
DEPARTMENT_ID, SALARY,
3. ROW_NUMBER:
SQL> SELECT *
FROM
(SELECT
DEPARTMENT_ID, SALARY,