boykap.files.wordpress.com  · web viewการใช้ oracle sql functions. expression. sql...

28
กกกกกก Oracle SQL Functions Expression SQL Expression คคค คคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคคค 1 คคคคคคคคค คคคคคค SQL Operator, SQL function คคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคค SQL Expression คคค คคคคคคคคคคคคคคคคคคค คคคค คคคคคค คคคคคคคคคคค คคคคคคคคคคคคคคคคคคคคค (query) คคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคคค คคคคคค คคคค database กกกกกกกกกกกกก (Syntax) คคคคคคคคคคคคคคคคคคคคคคค (Syntax) คคค SQL select statement คคคคคคคค SELECT column1, column2, columnN FROM table_name WHERE [CONDITION|EXPRESSION]; SQL expression คคคคคคคคคคคคคคคคคคคคคคค คคคคคคคคคคค (Boolean) คคคคคค (Numeric) คคคคคคค (Date) 1. คคคคคคคคคคค (Boolean)

Upload: tranque

Post on 09-Jan-2019

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การใช Oracle SQL Functions

ExpressionSQL Expression คอ การรวมเอาคาตวแปรหรอขอมลตงแต 1 ตวขนไป รวมถง SQL Operator, SQL function ทสามารถกำาหนดคาของขอมลได โดย SQL Expression คอ การเปรยบเสมอนสตร หรอ ประโยค ในภาษาเขยน ซงใชในการดงขอมล (query) ทำาใหเราสามารถเลอกขอมลทเราตองการจากฐานขอมล หรอ database  

รปแบบพนฐาน (Syntax)พจารณาจากรปแบบพนฐาน (Syntax) ของ SQL select statement ตอไปน

SELECT column1, column2, columnN

FROM table_name

WHERE [CONDITION|EXPRESSION];

 

SQL expression มดวยกนหลายชนดดงน

การตดสนใจ (Boolean) ตวเลข (Numeric) วนเวลา (Date)

 

1. การตดสนใจ (Boolean)SQL Boolean Expression จะดงเอาขอมลจากฐานขอมล หรอ database ดวยเงอนไขทตรงตามคาทกำาหนด

Page 2: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

SELECT column1, column2, columnN

FROM table_name

WHERE SINGLE VALUE MATCHING EXPRESSION;

จากตวอยางคอ Customer tableSQL> SELECT * FROM CUSTOMERS;

+----+----------+-----+-----------+----------+

| ID | NAME | AGE | ADDRESS | SALARY |

+----+----------+-----+-----------+----------+

| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |

| 2 | Khilan | 25 | Delhi | 1500.00 |

| 3 | kaushik | 23 | Kota | 2000.00 |

| 4 | Chaitali | 25 | Mumbai | 6500.00 |

| 5 | Hardik | 27 | Bhopal | 8500.00 |

| 6 | Komal | 22 | MP | 4500.00 |

| 7 | Muffy | 24 | Indore | 10000.00 |

+----+----------+-----+-----------+----------+

Boolean Expression กำาหนดใหเลอกขอมลแถวท Salary เทากบ 10,000SQL> SELECT * FROM CUSTOMERS WHERE SALARY = 10000;

+----+-------+-----+---------+----------+

| ID | NAME | AGE | ADDRESS | SALARY |

+----+-------+-----+---------+----------+

| 7 | Muffy | 24 | Indore | 10000.00 |

+----+-------+-----+---------+----------+

 

2. ตวเลข (Numeric)SQL Numberic Expression คอการคำานวณคาทางคณตศาสตร

SELECT numerical_expression as OPERATION_NAME

[FROM table_name

WHERE CONDITION] ;

Page 3: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

numerical_expression เปรยบเสมอนสตรทางคณตศาสตร

SQL> SELECT (15 + 6) AS ADDITION

From dual;

+----------+

| ADDITION |

+----------+

| 21 |

+----------+

บาง function ใชกระบวนการคำานวณแบบคณตศาสตร เชน avg(), sum(), count()SQL> SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS;

+---------+

| RECORDS |

+---------+

| 7 |

+---------+

 

3. วนเวลา (Date)SQL Date Expression ใชแสดงขอมลเวลา และ วนทปจจบน

SQL> SELECT CURRENT_TIMESTAMP

From dual;

+---------------------+

| Current_Timestamp |

+---------------------+

| 2016-11-19 16:21:56 |

+---------------------+

SQL> SELECT sysdate

From dual;

+-------------------------+

| GETDATE |

+-------------------------+

Page 4: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

| 2009-10-22 12:07:18.140 |

+-------------------------+

1 row in set (0.00 sec)

  

การใช Oracle SQL Functions

ผใชงานระบบฐานขอมลสามารถเรยกใชโปรแกรมเหลานใหทำางานรวมกบคำาสง SQL เพอการเลอกดขอมลหรอการจดการฐานขอมลใหฐานขอมลมประสทธภาพมากขน

เพอใหงายตอการศกษาใชงาน จะแบง Oracle SQL Functions ออกเปน 2 ประเภทดงน

1. Single Row Functions2. Group Functions

Single Row Functions

จะเปรยบเสมอนโปรแกรมทรบคาการเรยกใช โดยคาทรบเขาไปอาจจะเปน คาทกำาหนดขน หรอ คาจากคอลมนทเลอกขนมาจหากฐานขอมล หรออาจจะรบทงคาทกำาหนดขนรวมกบคาจากคอลมนทเลอกขนมาจากฐานขอมลกได จากนน Single Row Functions จะทำางานและสงผลลพธกลบมาในลกษณะ 1 ผลลพธตอ 1 row ทเรยกขนมาจากฐานขอมล ทำาให SQL Function ประเภทนถกเรยกวา Single Row Functions

รปแบบการใช Single Row Functions

การใชฟงกชน AVG และฟงกชน SUM

SELECT Single Row function (cloumn),………FROM table[WHERE condition][ORDER BY cloumn];

Page 5: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

Single Row Functions ทใชในการเปลยนชนดขอมล

จะรบคาชนดขอมลประเภทหนงเพอเปลยนเปนชนดขอมลอกประเภทหนง เพอประโยชนในการแสดงผล หรอ การนำาผลลพธไปคำานวณ หรอ การดำาเนนการอนๆตามตองการ

- Single Row Functions ทสามารถแปลงขอความ อกขระใหอยในรปของตวเลข และวนทได

Function ToVARCHAR or CHAR NUMBERVARCHAR or CHAR DATE

- Single Row Functions ทสามารถแปลงตวเลข หรอวนท ใหเปนตวหนงสอ ขอความได

Function ToNUMBER VARCHAR or CHARDATE VARCHAR or CHAR

การใชฟงกชน TO_CHAR กบ วนท (date) เพอเปลยนแปลงคาทเปนวนท ใหอยในรปของขอความหรอตวอกษร ตาม format ทเราตองการไดรปแบบ

หมายเหต:- รปแบบของวนทตองอยภายใตเครองหมาย ‘’- ตวเลกตวใหญสำาคญ ตองพมพใหตรงกบฐานขอมล- หากวนททเปนตวเลขหลกเดยวใหใส fm ขางหนา เชน เดอน มนาคม หากใส fm ขางหนากจะเปน 3

TO_CHAR (date, ‘format_model’)

Page 6: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

- หากตองการเรยกขอมลวนท มากกวา 1 ตว ใหใสเครองหมายคอมมา (,) คน

องคประกอบของการจดรปแบบขอมล (Format Model)

องคประกอบ ผลทไดYYYY ชอป คศ. ทเขยนดวยตวเลข เชน 2018YEAR ชอป คศ. ทเขยนเปนตวอกษร MM ชอเดอนทเปนตวเลข เชน เดอนมนาคม กไดเปน

03MOUNT ชอเตมของเดอน เชนเดอน มถนายน กจะเปน

JUNEMON ชอยอของเดอน คอ เอาตวอกษรสามตวแรกมา

เขยน เชน JANDY ชอยอของวน คอ เอาตวอกษรสามตวแรกมา

เขยน เชน MONDAY ชอเตมของวน เชน วนจนทร กจะเปน

MONDAYDD ชอวนทเปนตวเลข เชน วนท 2 กจะเปน 02

ตวอยางการใชฟงกชน TO_CHAR กบ Dates (วนท)

SELECT last_name, TO_CHAR (hire_date,'fmDD Month YYYY') AS HIREDATEFROM employees;

เปนการใชฟงชน TO_CHAR ในการแปลงขอมลวนทใหอยในรปของตวอกษร และใช fm ในการตดวนทใหเหลอเพยงหลกเดยว จากนนนำาไป

Page 7: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

ตวอยางการใชฟงกชน TO_CHAR กบ NUMBER (ตวเลข) เพอเปลยนแปลงคาทเปนตวเลข ใหอยในรปของขอความหรอตวอกษร ตาม format ทเราตองการได

รปแบบ

Single Row Functions ททำางานกบขอมลประเภท Character

ชอฟงกชน

ความหมาย ตวอยาง ผลทได

CONCAT

การเชอมคำา CONCAT (‘Hello’, ‘World’)

HelloWorld

SUBSTR

การตดเอา SUBSTR (‘HelloWorld’,1,5)

Hello

SELECT TO_CHAR (salary,'$99,999.00') SALARYFROM employees;

เปนการใชฟงชน TO_CHAR ในการแปลงขอมลเงนเดอน ใหเปนแบบตวอกษรทเราตองการ ในทนแปลงเงนเดอนใหมเครองหมาย $ นำาหนา ใหมคอมมาคนเมอตวเลขเกน 3 หลก และกใหมทศนยม 2 ตำาแหนง** เลข 9 แทนจำานวนตวเลข

Page 8: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

เฉพาะตวทตองการ

LENGTH

การนบจำานวนตวอกษร

LENGTH (‘HelloWorld’)

10

INSTR นบตวทตองการวาอยตวไหน

INSTR (‘HelloWorld’, W’)

6

LPAD การใชเครองหมายแทนคาวางจากดานซาย

LPAD (salary,8, ‘*’) ***24000

RPAD การใชเครองหมายแทนคาวางจากดานขวา

RPAD (salary,10, ‘*’) 24000*****

REPLACE

การแทนท REPLACE (‘JACK and JUE’, ‘J’, ‘BL’)

BLACK and BLUE

TRIM การตดตวทไมตองการออก

TRIM (‘H’ FROM ‘HelloWorld’)

elloWorld

LOWER ใชในการแปลงตวพมพใหญใหเปนตวพมพเลก

LOWER (‘SQL’) sql

UPPER ใชในการแปลงตวพมพเลกใหเปนตวพมพใหญ

UPPER (‘sql’) SQL

INICAP ใชแปลงตวอกษรตวแรกเปนพมพใหญ ทเหลอเปนพมพ

INICAP (‘sql course’) Sql Course

Page 9: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

เลก

ตวอยางการใชฟงกชน LOWER

ตวอยางการใชฟงกชน UPPER

ตวอยางการใชฟงกชน LENGTH

ตวอยางการใชฟงกชน SUBSTR

Single Row Functions ททำางานกบขอมลประเภท Number

ชอฟงกชน ความหมาย ตวอยาง ผลทไดROUND ใชในการตดทศนยมให

เหลอ 3 ตำาแหนงตำาแหนงท 4 มากกวาหรอเทากบ 5 ใหปดขน

ROUND (45.92652,3)

45.927

TRUNC ใชในการตดทศนยมให TRUNC 45.92

SELECT region_name, LOWER(region_name)FROM regions;

SELECT region_name, UPPER(region_name)FROM regions;

SELECT region_name, LENGTH(region_name)FROM regions;

SELECT region_name, SUBSTR (region_name,3,2), SUBSTR (region_name,3)FROM regions;

Page 10: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

เหลอ 2 ตำาแหนงโดยทไมตองปดขน

(45.92652,2)

MOD ใชในการหารเอาเศษ MOD (1600,300)

100

ตวอยางการใชฟงกชน ROUND

ตวอยางการใชฟงกชน TRUNC

Single Row Functions สำาหรบจดเกบคาทเปน NULL

ฟงกชน NVL - แปลงคาวาง ใหเปนคาทเราสนใจ แตชนดขอมลตองเขากนได- หากคลอลมนทเราสนใจเปนชนดขอมลแบบไหน เราตองเปลยนเปนชนดเดยวกนเทานนเชน

ถาคาไหนใน commission_pct ทเปนคาวาง ใหเปลยนจากคาวางนนเปนเลข 0

- NVL(commission_pct,0)

ถาคาไหนใน hire_date ทเปนคาวาง ใหเปลยนจากคาวางนนเปน 01-JAN-97

SELECT ROUND(45.92652,3), ROUND(45.92652,2), ROUND(45.92652,-3)FROM dual;

SELECT TRUNC(45.92652,3), TRUNC(45.92652,2), TRUNC(45.92652,-3)FROM dual;

Page 11: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

- NVL (hire_date,’01-JAN-97’)

ถาคาไหนใน job_id ทเปนคาวาง ใหเปลยนจากคาวางนนเปนคำาวา No Job Yet

- NVL (job_id, ‘No Job Yet’)

หมายเหต: ถาคาใดๆ ทจะทำาการเปลยนจากคาวาง แลวเปนตวอกษร หรอ format ตางๆ คาใดๆนน จะตองเขยนไวภายใตเครอง ‘’

ตวอยางการใชฟงกชน NVL

Output

การใช Single Row Functions หลาย ๆ ฟงกชนซอนกน

SELECT last_name, salary, NVL(commission_pct,0), (salary * 12) + (salary * 12*NVL(commission_pct,0)) AN_SALFROM employees;

เปนการใชฟงชน NVL ทำาการแปลงคาใน commission_pct ทมคาวางใหเปนเลข 0 จากนนนำาคาใน salary ไปคณ กบ 12 ไดคาเทาไหรใหเอามา

Page 12: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

- Single Row Functions สามารถซอนกนไดหลายระดบ- ฟงกชนทซอนกนจะถกทำาการประมวลผลจากฟงกชนทอยในสดกอน แลวคอยทำาออกมาเรอย ๆ

รปแบบ

ตวอยาง การใชหลาย ๆ ฟงกชนในโคดเดยวกน

output

SELECT last_name, UPPER(CONCAT(SUBSTR(LAST_NAME,1,8),'_US'))

F3 (F2 (F1 (col,arg1), arg2), arg3)

Step 1=

Step 3= Result 3

Step 2= Result 2

เปนการใชฟงชน 3 ฟงชนซอนกน โดยจะเรมทำาฟงชนทอยขางในสดกอน คอ SUBSTR เปนการตดคำาตวท 1 และ 8 ออก จากนนกใชฟงชน CONCAT ในการเชอมคำาทอยในคลอลมนเขากบ _US และสดทายกเปน

Page 13: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

Single Row Functions ททำางานกบขอมลประเภท Character

Group Functions

การใชฟงกชนแบบ GROUP จะรบคาทผใชกำาหนดให จากนนการทำางานของ Group Function จะทำากบกลมของ row และแสดงผลกลบมาในลกษณะ 1 ผลลพธ ตอ 1 กลมของ row ทำาให SQL Function ประเภทนถกเรยกวา Group Function ตวอยางการทำางานของ Group Function เชน การหาคาเฉลย (ขอมลหลายๆคา จะหาคาเฉลยของขอมลทงหมดได 1 คา) การหาผลรวม (ขอมลหลายๆคา จะหาผลรวมได 1 คา) ฯลฯ

- ประเภทของฟงกชนแบบ GROUPชอฟงกชน ความหมาย

AVG หาคาเฉลย (จำานวนทงหมดบวกกน หารดวย จำานวนสมาชก)

COUNT นบจำานวนสมาชกMAX หาคาสงสดMIN หาคาตำาสดVARIANCE หาความแปรปรวนSTDDEV หาสวนเบยงเบนมาตรฐานSUM หาผลรวม

หมายเหต: สามารถใชไดกบขอมลทเปนตวเลขเทานน แตจะมบางตวทสามารถใชไดทงในตวเลข ตวอกษร และ format date-timeรปแบบการใช GROUP FunctionSELECT group_function (cloumn),………FROM table[WHERE condition][ORDER BY cloumn];

Page 14: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การใชฟงกชน AVG และฟงกชน SUM

ตวอยางการใช GROUP Function

การใชฟงกชน MIN และฟงกชน MAX

- สามารถใชฟงกชน MIN และฟงกชน MAX กบ ตวเลข ตวอกษร และกวนท ได

SELECT AVG(salary),MAX(salary),MIN(salary),SUM(salary)FROM employees

เปนการใชฟงชนแบบ GROUP เขามาชวยในการเรยกดขอมล โดยหาคาเฉลยของเงนเดอน หาคาสงสดของเงนเดอน หาคาตำาสดของเงนเดอน และกหาผล

SELECT MIN(hire_date),MAX(hire_date)FROM employees;

เปนการใชฟงชน MIN ในการหาคาตำาสดของคลอลมน HIRE_DATE และใชฟงชน MAX ในการหาคาสงสดของ

Page 15: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การใชฟงกชน COUNT- ใหผลออกมาเปนตวเลขของจำานวนแถว

Output

COUNT(*) ---------- 45

ในกรณทมการเรยกใชงาน Group Function กบคอลลมนทมคาวาง

หมายเหต: กรณทคอลมนมคาวางเกดขน group function จะนบเฉพาะจำานวนทมคาเทานน โดยจะ ignore คาวางไป

SELECT COUNT(*) FROM employees WHERE department_id = 50;

เปนการใชฟงชน CONUT ในการนบจำานวนสมาชกของ ทงหมดของตาราง

SELECT COUNT(commission_pct) FROM employees WHERE department_id = 80;

เปนการใชฟงชน CONUT ในการนบจำานวนสมาชกของคลอลมน commission_pct

Page 16: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การใชคำาสง DISTINCT- เปนการยบรวมเอาตวทซำากนออกมาแค 1 คาเทานน

outputDEPARTMENT_ID------------- 100 30 null 20 70 90 110 50 40 80

10 60

12 rows selected.

จากนนเรยกใช FUNCTION COUNT เขามาครอบคำาสง DISTINCT (department_id))SELECT COUNT(DISTINCT (department_id)) FROM employees;

กอนการใชคำาสง

SELECT DISTINCT (department_id)FROM employees;

Page 17: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

ฟงกชนแบบ GROUP และคาวาง (NULL)

การใชฟงกชน NVL รวมกบฟงกชนแบบ GROUP และคาวาง

เปนการใชฟงชน COUNT รวมกน DISTINCT ในการเรยกดขอมลจากคลอลมน department_id โดยการ

SELECT AVG(commission_pct)FROM employees;

เปนการหาคาเฉลยของขอมลในคลอลมน commission_pct โดยทหากคาใดใน commission_pct เปนคาวาง ไมจะมองขามไป

SELECT AVG(NVL(commission_pct,0))

เปนการหาคาเฉลยของขอมลในคลอลมน commission_pct โดยทใชฟงชน NVL แปลงขอมลในคลอลมน commission_pct ทเปนคาวางใหเปน

Page 18: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การจดกลมของขอมล ดวยคำาสง GROUP BY- คำาสง GROUP BY จะอยระหวางคำาสง WHERE คำาสง ORDER BYรปแบบ

ตวอยาง การใชฟงกชน GROUP BY

ตวอยาง

SELECT colum,group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

SELECT department_id,AVG(salary)FROM employees

Page 19: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

เปนการเรยกดขอมลจากคลอลมน department_id และคลอลมน salary โดยทำาการหาคาเฉลยในคลอลมน salary กอนดงขอมลออกมาโชวและทำาการจด

SELECT AVG(salary)FROM employeesGROUP BY department_id;

ตวทใชในการ GROUP BY ไมจำาเปนตองอยในสวนของ SELECT กได

Page 20: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การจดกลมขอมล(GROUP BY) มากกวา 1 คลอลมน

ในกรณทมการเลอกขอมลทมเงอนไขหากใชฟงกชนแบบ GROUP จะใชคำาสง WHERE ไมได จะตองใชคำาสง HAVING แทน

การใชคำาสง HAVING

\

output

SELECT department_id dept_id, job_id, SUM(salary)FROM employees GROUP BY department_id, job_idORDER BY department_id desc;

เปนการเรยกดขอมลจากคอลลมน department_id แลวนำาไปเกบทคอลลมนใหมชอ dept_id จากคอลลมน job_id และหาผลรวมของคอลลมน salary จากนนทำาการจดกลมขอมลจากคอลลมน department_id และคอลลมน job_id และทำาการเรยงลำาดบ

SELECT department_id,MAX(salary)FROM employeesGROUP BY department_id HAVING MAX(salary) > 10000;

เปนการเรยกดขอมลจากคลอลมน department_id และหาคาสงสดของคลอลมน salary หลงจากนนทำาการจดกลมขอมลดวย

Page 21: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

สามารถใชฟงกชน HAVING รวมกบคำาสง WHERE ได

เปนการเรยกดขอมลจากคลอลมน department_id และหาคาสงสดของคลอลมน salary หลงจากนนทำาการจดกลมขอมลดวย

SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE '%RAP%'GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY PAYROLL;

เปนการเรยกดขอมลจากคลอลมน job_id และหาผลรวมของคลอลมน salary จากนนนำาไปไวทคลอลมนใหมชอ PAYROLL หลงจากนนทำาการจดกลมขอมลดวยคลอลมน job_id โดยมเงอนไขวา jbo_id ตองไมมคำาวา RAP (ใช WHERE) จดกลมขอมลดวย

Page 22: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

การใชฟงกชน ซอนฟงกชน

คำาสง CASE เปนคำาสงทใชในการตรวจสอบเงอนไขคลาย ๆ กบคำาสง IF-THEN-ELSE

รปแบบ

หมายเหต: CASE จะเกดขนในสวนของ Select command

โดยท

SELECT MAX (AVG (salary))FROM employeesGROUP BY

เปนการเรยกดขอมลจากคลอลมน salary โดยทำาการหาคาเฉลยของ salary กอน จากนนทำาการหาคาสงสดของ salary และทำาการจดกลม

CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_expr3 THEN return_exprn3

Page 23: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

- expr คอ ชอคลอลมนทเราจะใชในการตดสนใจ- comparison คอ เงอนไข- return_expr คอ ผลลพธทจะใหออกมา

ตวอยางการใชคำาสง CASE

ฟงกชน DECODE

SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN 'ST_CLERK' THEN 1.15*salary WHEN 'SA_REP' THEN 1.20*salary ELSE salary END as "REVISED SALARY"

เปนการใชคำาสง CASE ในการเรยกดขอมล โดยดวาคลอลมน job_id ตรงกบชอใดใน 3 คา หากตรงกบ IT_PROG กเอา salary ไปคณกบ 1.10 หากตรงกบ ST_CLERK กเอา salary ไปคณกบ 1.15 หากตรงกบ SA_REP กเอา salary ไปคณกบ 1.20 แตหากไมตรงกบคาใด ๆ ใน

Page 24: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

- ลกษณะการทำางานกจะคลาย ๆ กบคำาสง CASE และ คำาสง IF-THEN-ELSE

รปแบบ

- ถาใช CASE จะมคำาวา WHEN, THEN, ELSE และ END- หากใช DECODE ใหตวคำาพวก คอ WHEN, THEN, ELSE และ END นนออก แลวแทนดวยเครองหมายคอมมา (,) ยกเวนตรงคำาสง END ไมตองใส- ทสำาคญ มวงเลบครอบ คำาสงดวย

ตวอยางการใชฟงกชน DECODE

DECODE (col | expression, rearch1,result1

[, search2 , result2,……,……….][, default])

SELECT last_name,job_id,salary, DECODE (job_id , 'IT_PROG' , 1.10*salary , 'ST_CLERK' , 1.15*salary , 'SA_REP' , 1.20*salary

Page 25: boykap.files.wordpress.com  · Web viewการใช้ Oracle SQL Functions. Expression. SQL Expression คือ การรวมเอาค่าตัวแปรหรือข้อมูลตั้งแต่

ผลทไดกจะเหมอนกบการใชคำาสง CASE เพยงแคเปลยนรปแบบจากการเรยกดขอมลจากคำาสง CASE เปนฟงชน DECODE