Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 104,449

HOME > ASP > SQL Tutorial (Part 2) > SQL SELECT GROUP BY and HAVING




VPS  250 ҷ͹

SQL SELECT GROUP BY and HAVING

SQL SELECT GROUP BY and HAVING
 
    วลี GROUP BY จะถูกใช้เมื่อต้องการจัดกลุ่มที่ถูกคำนวณด้วย aggregate function ซึ่ง aggregate function
คือฟังก์ชั่นที่ใช้ในการคำนวณค่าของข้อมูลหลายๆ คอลัมน์และคืนค่าอกมาเพียงค่าเดียวโดย aggregate function มีฟังก์ชั่นต่างๆ ดังนี้
 

 

aggregate function คำอธิบาย
AVG ใช้ในการหาค่าเฉลี่ยในคอลัมน์ที่กำหนด
MAX หาค่าสูงสุดในคอลัมน์ที่กำหนด
MIN หาค่าต่ำสุดในคอลัมน์ที่กำหนด
SUM หาผลรวมในคอลัมน์ที่กำหนด
COUNT นับจำนวนแถวในคอลัมน์ที่กำหนด
STDEV หาค่าส่วนเบี่ยงเบนมาตรฐาน
STDEVP หาค่าส่วนเบี่ยงเบนฐานนิยม
VAR หาค่าความแปรปรวน
VARP หาค่าความแปรปรวนฐานนิยม
 
ซึ่งผมจะยกตัวอย่างให้ดูเพื่อความเข้าใจง่ายๆกันนิดนึงดังนี้
test_group_by.asp

 

  strSQL = "SELECT Profile_ID, Profile_Name, Profile_Age "
  strSQL = strSQL & "FROM Profile"
  strSQL = strSQL & "WHERE Profile_ID >= 5 AND Profile_ID <= 8 " 
  strSQL = strSQL & " ORDER BY Profile_ID ASC;"




จากคำสั่งด้านบนเป็นการเลือกค่าฟิลด์ Profile_ID, Profile_Name, Profile_Age  ในตาราง Profile โดยมีข้อกำหนดว่า ค่าที่แสดงนั้นต้องเป็นค่าที่ Profile_ID น้อยกว่าหรือเท่ากับ 5 และ Profile_ID มากกว่าหรือเท่ากับ 8 ดังนั้นค่าที่แสดงออกมาจะอยู่ในช่วงของ Profile_ID ที่ 5 - 8 และเรียงลำดับจากน้อยไปหามากตาม Profile_ID ซึ่งจะได้ผลดังนี้



Profile_ID Profile_Name Profile_Age
5 user5 34
6 user6 36
7 user7 23
8 user8 26



แต่ถ้าเราต้องการที่จะดูผลรวมทั้งหมดของอายุในฟิลด์ Profile_Age 
เราสามารถเขียนคำสั่งได้ใหม่ดังนี้

  strSQL = "SELECT SUM(Profile_Age) As ผลรวมของอายุ "
  strSQL = strSQL & "FROM Profile "
  strSQL = strSQL & "WHERE Profile_ID >= 5 AND Profile_ID <= 8 " 


จากคำสั่งด้านบนเป็นการเลือกค่าฟิลด์ Profile_Age  ในตาราง Profile  โดยเปลี่ยนชื่อฟิลด์ Profile_Age เป็น ผลรวมของอายุ
เพราะว่าค่าที่คืนกลับมามีเพียงค่าเดียวจึงต้องทำการเปลี่ยนชื่อให้ใหม่มิเช่นนั้นคำสั่งจะเกิดการ Error และมีข้อกำหนดว่า ค่าที่แสดงนั้นต้องเป็นค่าที่ Profile_ID น้อยกว่าหรือเท่ากับ 5 และ Profile_ID มากกว่าหรือเท่ากับ 8 ดังนั้นค่าที่แสดงออกมาจะอยู่ในช่วงของ Profile_ID ที่ 5 - 8 ซึ่งจะได้ผลดังนี้


ผลรวมของอายุ
119



ทีนี้มาดูอีก 2 ตัวอย่างนะครับการใช้ aggregate function
แต่สามารถแสดงค่าออกมาได้มากกว่า 1 ค่าจากเดิมที่ผมบอกไปว่าค่าที่ถูกคำนวณด้วย aggregate function จะคืนออกมาเพียงค่าเดียวซึ่งก็คือค่าที่คำนวณแล้วแต่เราสามารถที่จะให้แสดงหลายค่าได้โดยต้องมีฟิลด์ตัวหนึ่งที่เป็นฟิลด์หลักของการคำนวณและฟิลด์อีกตัวที่ถูกคำนวณโดยการใช้วลี GROUP BY หรือ HAVING  ดังนี้

ตัวอย่างที่ 1

  strSQL = "SELECT Profile_Location, SUM(Profile_Age) As ผลรวมของอายุ "
  strSQL = strSQL & "FROM Profile "
  strSQL = strSQL & "GROUP BY Profile_Location


จากคำสั่งด้านบนเป็นการเลือกค่าฟิลด์ Profile_Location, Profile_Age  ในตาราง Profile  โดยเปลี่ยนชื่อฟิลด์ Profile_Age เป็น ผลรวมของอายุ 
ซึ่งการแสดงผละเป็นการรวมค่าอายุของฟิลด์ Profile_Location ที่มีค่าเหมือนกัน ซึ่งจะได้ผลดังนี้

Profile_Location ผลรวมของอายุ
Bangkok 34
Hongkong 158
Jagata 52
London 30


ตัวอย่างที่ 2

  strSQL = "SELECT Profile_Location, SUM(Profile_Age) As ผลรวมของอายุ "
  strSQL = strSQL & "FROM Profile "
  strSQL = strSQL & "GROUP BY Profile_Location " 
  strSQL = strSQL & "HAVING SUM(Profile_Age) > 35 " 


จากคำสั่งด้านบนเป็นการเลือกค่าฟิลด์ Profile_Location, Profile_Age  ในตาราง Profile  โดยเปลี่ยนชื่อฟิลด์ Profile_Age เป็น ผลรวมของอายุ ซึ่งการแสดงผละเป็นการรวมค่าอายุของฟิลด์ Profile_Location ที่มีค่าเหมือนกันโดยที่จะต้องมีผลรวมที่มากกว่า 35  ซึ่งจะได้ผลดังนี้



Profile_Location ผลรวมของอายุ
Hongkong 158
Jagata 52


ซึ่งจะมีเพียง 2 ค่าเท่านั้นที่แสดงออกมาเพราะมากกว่า 35








   
Share


ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท


ลองใช้ค้นหาข้อมูล


   


Bookmark.   
       
  By : ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ)
  Score Rating :  
  Create/Update Date : 2008-08-10 16:01:53 / 2012-05-30 21:09:21
  Download : No files
 Sponsored Links / Related

 
What SQL ?
Rating :

 
Database & Connection
Rating :

 
SQL CREATE TABLE
Rating :

 
SQL ALTER TABLE ( ADD,DROP )
Rating :

 
SQL DROP TABLE
Rating :

 
SQL INSERT
Rating :

 
SQL SELECT , FROM, TOP, ORDER BY
Rating :

 
SQL SELECT DISTINCT, AS
Rating :

 
SQL SELECT ... WHERE,AND,OR,NOT,IN,LIKE
Rating :

 
SQL GROUP BY and HAVING
Rating :

 
SQL JOIN TABLE
Rating :

 
SQL SELECT INNER JOIN
Rating :

 
SQL SELECT SUBQUERY
Rating :

 
SQL INSERT INTO
Rating :


ThaiCreate.Com Forum




Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว


สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   


Acc : thaicreate@hotmail.com










Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2017 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่