ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย PHP connect SQL
ตัวอย่างตาราง
บทความก่อนหน้านี้เราได้ทำการสอนวิธีการ COUNT IF ผ่าน Function COUNT ของ Mysql ไปแล้ว ท่านสามารถอ่านได้ >>คลิกที่นี่<<
แต่ข้อจำกัดของการใช้งาน Function COUNT ก็คือเราสามารถใช้นับจำนวนได้ทีละ 1 ค่าเท่านั้น ดังนั้น วันนี้ OnlyMycode จะมาแนะนำวิธีนับจำนวนข้อมูลแบบหลาย ๆ ค่าพร้อมกัน
ตัวอย่างที่ 1 นับจำนวนแบบมีเงื่อนไข line_no = 1, 3 และ 5
ตัวอย่างการใช้งาน
SELECT
SUM(IF(t1.line_no = 1,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3,1,0)) AS line_no3,
SUM(IF(t1.line_no = 5,1,0)) AS line_no5
FROM
doc_deal_credit_list AS t1
SELECT
SUM(IF(t1.line_no = 1,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3,1,0)) AS line_no3,
SUM(IF(t1.line_no = 5,1,0)) AS line_no5
FROM
doc_deal_credit_list AS t1
จาก SQL ด้านบนเราจะได้ผลลัพธ์ line_no1 = 28 / line_no1 = 26 / line_no1 = 21
Note: จากตัวอย่างด้านบน เราสามารถนับจำนวนแยกตามเงื่อนไข line_no = 1, 3 และ 5 โดยที่เราระบุเงื่อนไขไว้ที่ Function SUM IF ได้เลย
ตัวอย่างการใช้งาน
SELECT
SUM(IF(t1.line_no = 1,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
WHERE t1.doc_price BETWEEN 200 AND 300
SELECT
SUM(IF(t1.line_no = 1,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
WHERE t1.doc_price BETWEEN 200 AND 300
จาก SQL ด้านบนเราจะได้ผลลัพธ์ line_no1 = 7 / line_no1 = 8 / line_no1 = 8
Note: เราสามารถเพิ่มเงื่อนไขการนับให้กับการนับข้อมูลผ่าน WHERE เงื่อนไขที่เราเพิ่มเข้าไปจะถูก Apply ไปใช้กับการนับจำนวนทุกค่าในชุด SQL ของเรา
ตัวอย่างที่ 3 Advance Condition ระบุเงื่อนไขให้แต่ละค่าที่ต้องการนับ
ตัวอย่างการใช้งาน
SELECT
SUM(IF(t1.line_no = 1 AND t1.doc_price BETWEEN 200 AND 300,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3 AND t1.doc_price BETWEEN 300 AND 350,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5 AND t1.doc_price BETWEEN 200 AND 250,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
SELECT
SUM(IF(t1.line_no = 1 AND t1.doc_price BETWEEN 200 AND 300,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3 AND t1.doc_price BETWEEN 300 AND 350,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5 AND t1.doc_price BETWEEN 200 AND 250,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
จาก SQL ด้านบนเราจะได้ผลลัพธ์ line_no1 = 6 / line_no1 = 3 / line_no1 =0
Note: เราสามารถระบุเงื่อนไขการให้กับการนับข้อมูลแบบจำเพาะผ่าน IF ในแต่ละข้อมูลเราต้องการนับดังตัวอย่างด้านบน
$sql = "SELECT
SUM(IF(t1.line_no = 1 AND t1.doc_price BETWEEN 200 AND 300,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3 AND t1.doc_price BETWEEN 300 AND 350,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5 AND t1.doc_price BETWEEN 200 AND 250,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
WHERE t1.id > 500";
$result = mysqli_query($connect, $sql);
foreach ($result as $key => $detail){
echo "บรรทัดที่ 1 : ".$detail['line_no1']." รายการ<br>";
echo "บรรทัดที่ 2 : ".$detail['line_no2']." รายการ<br>";
echo "บรรทัดที่ 2 : ".$detail['line_no3']." รายการ<br>";
echo "<hr>";
}
SUM(IF(t1.line_no = 1 AND t1.doc_price BETWEEN 200 AND 300,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3 AND t1.doc_price BETWEEN 300 AND 350,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5 AND t1.doc_price BETWEEN 200 AND 250,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
WHERE t1.id > 500";
$result = mysqli_query($connect, $sql);
foreach ($result as $key => $detail){
echo "บรรทัดที่ 1 : ".$detail['line_no1']." รายการ<br>";
echo "บรรทัดที่ 2 : ".$detail['line_no2']." รายการ<br>";
echo "บรรทัดที่ 2 : ".$detail['line_no3']." รายการ<br>";
echo "<hr>";
}
ผลลัพธ์
บรรทัดที่ 1 : 6 รายการ
บรรทัดที่ 2 : 3 รายการ
บรรทัดที่ 3 : 0 รายการ
สรุป
นับจำนวนคนตามช่วงอายุ ช่วง 10 - 20 / 21 - 30 / 31 ขึ้นไป
นับจำนวนรถตามสี เช่น สีดำ / สีขาว / สีแดง / สีอื่น
นับห้องตามสถานะ เช่น จอง / พัก /
เป็นต้น