MySQL count single column display multiple column

ต่อเนื่องจากเพจ MySQL ก่อนหน้านี้ที่ได้กล่าวถึง การใช้งาน CASE WHEN สำหรับเปลี่ยนแปลงข้อมูลในคอลัมน์
ในเพจนี้จะนำเสนอการนับจำนวนข้อมูลออกมาตามเงื่อนไขที่เรากำหนดอยู่ในข้อมูลเพียงแถวเดียว

ตัวอย่างข้อมูลที่ใช้ ตาราง temp
tmp_fk_update_case 
รูปที่ 1 ข้อมูลตาราง temp ที่มีข้อมูลคอลัมน์ tmp_status 3 ค่า คือ Y , N และ ”

จากตัวอย่างข้อมูลข้างต้น
โจทย์ต้องการนับจำนวนข้อมูลข้อมูลในแต่ละสถานะ (tmp_status) และต้องการแสดงข้อมูลภายในแถวเดียวกัน
แสดงผลตามลำดับต่อไปนี้
1. จำนวนข้อมูลทั้งหมด
2. จำนวนข้อมูลที่มีสถานะ เท่ากับ Y
3. จำนวนข้อมูลที่มีสถานะ เท่ากับ N
4. จำนวนข้อมูลที่มีสถานะ เท่ากับ ”

คำสั่ง SQL ที่ใช้สำหรับกรณีนี้คือ

SELECT count(*) AS num_total
, SUM( CASE WHEN tmp_status LIKE ‘Y’ THEN 1 ELSE 0 END ) AS num_statusY
, SUM( CASE WHEN tmp_status LIKE ‘N’ THEN 1 ELSE 0 END ) AS num_statusN
, SUM( CASE WHEN tmp_status LIKE ” THEN 1 ELSE 0 END ) AS num_statusSp
FROM `temp` WHERE 1

ผลลัพย์ที่ได้คือ
sum_case 
รูปที่ 2 ข้อมูลตาราง temp แสดงจำนวนข้อมูลข้อมูลในแต่ละสถานะ (tmp_status)

 

Author : นายสิทธิชัย สมพันธุ์ (แบงค์)