การกรองและการเรียงลำดับข้อมูล

การตัดสินใจเชิงข้อมูลด้วย SQL

Tim Verdonck

Professor Statistics and Data Science

WHERE

เลือกข้อมูลลูกค้าทั้งหมดจากอิตาลี:

SELECT *
FROM customers
WHERE country = 'Italy';
|customer_id | name              | country | gender | date_of_birth | date_account_start|
|------------|-------------------|---------|--------|---------------|-------------------|
| 53         | Teresio Panicucci | Italy   | male   | 1999-07-21    | 2018-11-06        |
| 54         | Demetrio Palermo  | Italy   | male   | 1997-10-10    | 2018-10-17        |
| 55         | Facino Milano     | Italy   | male   | 1973-05-23    | 2018-01-02        |
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวดำเนินการใน WHERE clause

  • ตัวดำเนินการเปรียบเทียบ:
    • เท่ากับ =
    • ไม่เท่ากับ <>
    • น้อยกว่า <
    • น้อยกว่าหรือเท่ากับ <=
    • มากกว่า >
    • มากกว่าหรือเท่ากับ >=
  • ตัวดำเนินการ BETWEEN
  • ตัวดำเนินการ IN
  • ตัวดำเนินการ IS NULL และ IS NOT NULL
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวอย่างตัวดำเนินการเปรียบเทียบ

เลือกทุกคอลัมน์จาก movies ที่มีแนวไม่ใช่ Drama

SELECT *
FROM movies
WHERE genre <> 'Drama';

เลือกทุกคอลัมน์จาก movies ที่มีราคาเช่ามากกว่าหรือเท่ากับ 2

SELECT *
FROM movies
WHERE renting_price >= 2;
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวอย่าง: ตัวดำเนินการ BETWEEN

เลือกทุกคอลัมน์จาก customers ที่วันสร้างบัญชีอยู่ระหว่าง 2018-01-01 ถึง 2018-09-30

SELECT *
FROM customers
WHERE date_account_start BETWEEN '2018-01-01' AND '2018-09-30';
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวอย่าง: ตัวดำเนินการ IN

เลือกนักแสดงทั้งหมดที่มีสัญชาติเป็น USA หรือ Australia

SELECT *
FROM actors
WHERE nationality IN ('USA', 'Australia')
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวอย่าง: ตัวดำเนินการ NULL

เลือกทุกคอลัมน์จาก renting ที่ rating เป็น NULL

SELECT *
FROM renting
WHERE rating IS NULL

เลือกทุกคอลัมน์จาก renting ที่ rating ไม่เป็น NULL

SELECT *
FROM renting
WHERE rating IS NOT NULL
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวดำเนินการบูลีน AND

เลือกชื่อลูกค้าและวันที่สร้างบัญชี สำหรับลูกค้าที่มาจาก อิตาลี AND ที่ สร้างบัญชีระหว่าง 2018-01-01 ถึง 2018-09-30

SELECT name, date_account_start
FROM customers
WHERE country = 'Italy'
AND date_account_start BETWEEN '2018-01-01' AND '2018-09-30';
| name               | date_account_start |
|--------------------|--------------------|
| Facino Milano      | 2018-01-02         |
| Mario Lettiere     | 2018-01-30         |
| Rocco Buccho       | 2018-02-27         |
| Cristoforo Mancini | 2018-01-12         |
การตัดสินใจเชิงข้อมูลด้วย SQL

ตัวดำเนินการบูลีน OR

เลือกชื่อลูกค้าและวันที่สร้างบัญชี สำหรับลูกค้าที่มาจาก อิตาลี _OR_ ที่ สร้างบัญชีระหว่าง 2018-01-01 ถึง 2018-09-30

SELECT name, date_account_start
FROM customers
WHERE country = 'Italy'
OR date_account_start BETWEEN '2018-01-01' AND '2018-09-30';
| name                  | country | date_account_start |
|-----------------------|-------- |--------------------|
| Rowanne Couperus      | Belgium | 2018-08-26         |
| Annelous Sneep        | Belgium | 2018-05-12         |
| Jaëla van den Dolder  | Belgium | 2018-02-08         |
| ...                   | ...     | ...                |
การตัดสินใจเชิงข้อมูลด้วย SQL

ORDER BY

เรียงลำดับผลลัพธ์ของคิวรีตาม rating

SELECT *
FROM renting
WHERE rating IS NOT NULL
ORDER BY rating;
| renting_id | customer_id | movie_id | rating | date_renting |
|------------|-------------|----------|--------|--------------|
| 552        | 28          | 56       | 1      | 2017-03-27   |
| 558        | 41          | 19       | 3      | 2019-01-13   |
| 444        | 120         | 59       | 3      | 2018-08-10   |
| 200        | 86          | 46       | 3      | 2018-08-26   |
| 234        | 104         | 28       | 4      | 2018-10-04   |
การตัดสินใจเชิงข้อมูลด้วย SQL

ORDER BY ... DESC

เรียงลำดับผลลัพธ์ของคิวรีตาม rating จากมากไปน้อย

SELECT *
FROM renting
WHERE rating IS NOT NULL
ORDER BY rating DESC;
| renting_id | customer_id | movie_id | rating | date_renting |
|------------|-------------|----------|--------|--------------|
| 243        | 7           | 5        | 10     | 2019-01-11   |
| 18         | 36          | 39       | 10     | 2019-03-20   |
| 396        | 7           | 40       | 10     | 2018-09-11   |
| 487        | 61          | 48       | 10     | 2017-08-14   |
| 476        | 78          | 42       | 10     | 2018-07-04   |
การตัดสินใจเชิงข้อมูลด้วย SQL

มาฝึกกันเถอะ!

การตัดสินใจเชิงข้อมูลด้วย SQL

Preparing Video For Download...