ความแตกต่างระหว่างการใช้คำสั่ง SQL GROUP BY (เอสคิวแอล กรุ๊ป บาย) และ SQL ORDER BY (เอสคิวแอล ออร์เดอร์ บาย)

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
pprn
PHP Super Member
PHP Super Member
โพสต์: 287
ลงทะเบียนเมื่อ: 02/07/2018 10:45 am

ความแตกต่างระหว่างการใช้คำสั่ง SQL GROUP BY (เอสคิวแอล กรุ๊ป บาย) และ SQL ORDER BY (เอสคิวแอล ออร์เดอร์ บาย)

โพสต์โดย pprn » 05/07/2018 12:03 pm

1. SQL GROUP BY คือการจัดกลุ่มคำที่ซ้ำกันให้แสดงแค่คำเดียว หรือการจัดกลุ่มของคำซ้ำกันให้รวมกลุ่มกัน โดยจะมีการเรียงลำดับตามตัวอักษร

เพื่อใช้ในการวิเคราะห์ หรือทำรายงานสรุปข้อมูล

รูปแบบคำสั่ง GROUP BY

โค้ด: เลือกทั้งหมด

SELECT column_name1, column_name2
FROM table_name
GROUP BY column_name1, column_name2;

อธิบายโค้ด GROUP BY
    - table_name คือ ชื่อตารางข้อมูล
    - column_name คือ ชื่อคอลัมน์


ตัวอย่างการใช้ GROUP BY

ตัวอย่างข้อมูลในตาราง CUSTOMERS

Group by.JPG
ข้อมูลในตาราง CUSTOMERS
Group by.JPG (24.71 KiB) เปิดดู 64 ครั้ง


โค้ด การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME รวมถึง SALARY ด้วย GROUP BY

    การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME รวมถึง SALARY รวมทั้งหมดของ NAME เดียวกัน จากการจัดกลุ่ม

โค้ด: เลือกทั้งหมด

SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;


ผลลัพธ์การใช้ GROUP BY

    จากผลลัพธ์จะเห็นได้ว่า การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME จะมีการจัดกลุ่มคำซ้ำให้รวมอยู่เป็นกลุ่มเดียวกันและมีการเรียงลำดับตัว
อักษรนำหน้าภาษาอังกฤษตัวที่มาก่อน ซึ่งหลังเรียงตามลำดับ รวมทั้งผลรวมของ SALARY ตามลำดับของคอลัมน์ NAME ด้วย

Group by1.JPG
ผลลัพธ์การใช้ GROUP BY ตาราง CUSTOMERS
Group by1.JPG (17.62 KiB) เปิดดู 64 ครั้ง



2. SQL ORDER BY คือ การจัดกลุ่มคำที่ซ้ำกันให้แสดงคำซ้ำโดยเอาทุกคำซ้ำมาแสดงด้วย

    เราสามารถใช้ 1 column หรือ หลาย column ในการจัดเรียงข้อมูลก็ได้ โดยมี option ให้เลือกดังนี้

      - ASC (Default) เรียงจาก น้อยไปมาก
      - DESC เรียงจาก มากไปน้อย

รูปแบบคำสั่ง ORDER BY

โค้ด: เลือกทั้งหมด

SELECT column_name-list
FROM table_name
[ORDER BY column_name1, column_name2, .. column_nameN] [ASC | DESC];

อธิบายโค้ด ORDER BY
    - column_name-list คือ ชื่อคอลัมน์ต่างๆ ในฐานข้อมูล
    - table_name คือ ชื่อตารางข้อมูล
    - column_name คือ ชื่อคอลัมน์


ตัวอย่างการใช้ ORDER BY

ตัวอย่างข้อมูลในตาราง ORDER BY

order by.JPG
ข้อมูลในตาราง CUSTOMERS
order by.JPG (25.83 KiB) เปิดดู 64 ครั้ง


โค้ด การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME รวมถึง SALARY ด้วย ORDER BY จากน้อยไปมาก

โค้ด: เลือกทั้งหมด

 SELECT * FROM CUSTOMERS
   ORDER BY NAME, SALARY;


ผลลัพธ์การใช้ ORDER BY

    จากผลลัพธ์จะเห็นได้ว่า การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME ที่ซ้ำกันทุกตัว และมีการจัดเรียงตัวอักษรภาษาอังกฤษตัวที่มาก่อน
และเรียงลำดับ SALARY จากน้อยไปมาก

order by asc.JPG
ผลลัพธ์การใช้ OREDER BY ตาราง CUSTOMERS Option ASC
order by asc.JPG (20.48 KiB) เปิดดู 64 ครั้ง


โค้ด การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME รวมถึง SALARY ด้วย ORDER BY จากมากไปน้อย

โค้ด: เลือกทั้งหมด

SELECT * FROM CUSTOMERS
   ORDER BY NAME DESC;


ผลลัพธ์การใช้ ORDER BY option DESC

    จากผลลัพธ์จะเห็นได้ว่า การดึงข้อมูลจากตาราง CUSTOMERS เพื่อแสดงคอลัมน์ NAME ที่ซ้ำกันทุกตัว และมีการจัดเรียงตัวอักษรภาษาอังกฤษตัวที่มาก่อน
และเรียงลำดับ SALARY จากมากไปน้อย

ORDER BY1.JPG
ผลลัพธ์การใช้ OREDER BY ตาราง CUSTOMERS Option DESC
ORDER BY1.JPG (20.64 KiB) เปิดดู 64 ครั้ง


----------------------------------------------------------------------------------------------------------------------------------------------------------------
_____________________________________________________________________________________________
บทความนี้เเป็นบทความที่จัดทำขึ้นเพื่อเนะนำเครื่องมือช่วยสำหรับนักพัฒนา SQL ซึ่งเป็นความรู้พื้นฐานในการพัฒนา phpMyadmin ต่อไป เเละขอเเนะนำความรู้ที่เกี่ยวข้องกับโดยสามารถศึกษาได้จากบทเรียน SQL ได้ที่นี่ เพื่อเพิ่มความเข้าใจในการใช้งานเครื่องมือต่างๆ ค่ะ
_____________________________________________________________________________________________

----------------------------------------------------------------------------------------------------------------------------------------------------------------

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 12 และ บุคคลทั่วไป 0 ท่าน