ลองศึกษาดูนะครับอาจจะพอมีประโยชน์บ้างนะครับ
| id | date | name | wrong | penalty | sex |
| 12589 | 10/01/1998 | มานพ ศรีสุข | หนีเรียน | ตักเตือน | ชาย |
| 14263 | 15/01/1998 | ภาณุมาส ใจจริง | หนีเรียน | ตักเตือน | ชาย |
| 10256 | 16/01/1998 | สมชาย ใจดี | ไม่เข้าแถว | ตักเตือน | ชาย |
| 10256 | 17/01/1998 | สมชาย ใจดี | ไม่เข้าแถว | ตักเตือน | ชาย |
| 14263 | 18/01/1998 | ภาณุมาส ใจจริง | หนีเรียน | ตักเตือน | ชาย |
จากตารางตัวอย่างด้านบนเมื่อเราต้องการทำการ group ตามคอลัมน์ wrong และตามคอลัมน์ sex และต้องการรายงานแค่ว่ามีจำนวนนักเรียนที่ทำผิดแต่ละรายการกี่คน ซึ่งผลลัพธ์ควรจะได้ดังนี้
| หนีเรียน | 2 คน |
| ไม่เข้าแถว | 1 คน |
คราวนี้เราก็มาดูวิธีเขียน sql ในการหาผลลัพธ์ที่ออกมาดังนี้ครับ
SELECT DISTINCT "penalty"."wrong",
count( DISTINCT id)
FROM "penalty"
WHERE ( "penalty"."sex" = 'ชาย' ) AND
( "penalty"."date" between :begdate and :enddate )
GROUP BY "penalty"."wrong"
ลองศึกษาดูนะครับอาจจะพอมีประโยชน์บ้างนะครับ
บทความนี้มาจาก www.soopawat.com


