รวมเทคนิคต่าง ๆ ในการพัฒนาระบบ ที่น่าสนใจ รวมไว้ที่เดียว มีอะไรสอบถาม สามารถติดต่อผ่านช่องผ่าน Fanpage เราได้เลย

วันเสาร์ที่ 2 พฤษภาคม พ.ศ. 2563

SUM IF MySQL สรุปจำนวนตัวเลขแยกตามเดือน ตัวอย่างการใช้งานร่วมกับ PHP

Share:

ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย  PHP connect SQL

ตัวอย่างตาราง

ตัวอย่าง Sum if SQL สำหรับดึงข้อมูลสรุปตัวเลขของแต่ละเดือน
ตัวอย่างการใช้งาน
SELECT
YEAR(t1.doc_date) AS `year`,
Sum(IF(MONTH(t1.doc_date)=1,t1.doc_price,0)) AS `m1`,
Sum(IF(MONTH(t1.doc_date)=2,t1.doc_price,0)) AS `m2`,
Sum(IF(MONTH(t1.doc_date)=3,t1.doc_price,0)) AS `m3`,
Sum(IF(MONTH(t1.doc_date)=4,t1.doc_price,0)) AS `m4`,
Sum(IF(MONTH(t1.doc_date)=5,t1.doc_price,0)) AS `m5`,
Sum(IF(MONTH(t1.doc_date)=6,t1.doc_price,0)) AS `m6`,
Sum(IF(MONTH(t1.doc_date)=7,t1.doc_price,0)) AS `m7`,
Sum(IF(MONTH(t1.doc_date)=8,t1.doc_price,0)) AS `m8`,
Sum(IF(MONTH(t1.doc_date)=9,t1.doc_price,0)) AS `m9`,
Sum(IF(MONTH(t1.doc_date)=10,t1.doc_price,0)) AS `m10`,
Sum(IF(MONTH(t1.doc_date)=11,t1.doc_price,0)) AS `m11`,
Sum(IF(MONTH(t1.doc_date)=12,t1.doc_price,0)) AS `m12`
FROM
doc_deal_credit_list AS t1
WHERE YEAR(t1.doc_date) < 2020
GROUP BY `year`

จาก SQL ด้านบนเราจะได้ผลลัพธ์ ตามรูปนี้

Note:
รูปแบบของการใช้ IF และ SUM IF
คำสั่ง IF
IF(condition, value_true, value_false)
คำสั่ง SUM IF
SUM(IF(condition, value_true, value_false))

หากต้องการระบุปีที่ต้องการดึงข้อมูลเราสามารถเปลี่ยนข้อมูล WHERE เช่น ต้องการดึงข้อมูลปี 2018 เราสามารถเขียนได้ ดังนี้
WHERE YEAR(t1.doc_date) = 2018

หากต้องการระบุ ช่วงปี ที่ต้องการดึงข้อมูลเราสามารถเปลี่ยนข้อมูล WHERE เช่น ต้องการดึงข้อมูลปี 2018 - 2020 เราสามารถเขียนได้ ดังนี้
WHERE YEAR(t1.doc_date) BETWEEN 2018 AND 2020



ตัวอย่างการใช้ COUNT IF ในรูปแบบ Code PHP
$sql = "SELECT
YEAR(t1.doc_date) AS `year`,
Sum(IF(MONTH(t1.doc_date)=1,t1.doc_price,0)) AS `m1`,
Sum(IF(MONTH(t1.doc_date)=2,t1.doc_price,0)) AS `m2`,
Sum(IF(MONTH(t1.doc_date)=3,t1.doc_price,0)) AS `m3`,
Sum(IF(MONTH(t1.doc_date)=4,t1.doc_price,0)) AS `m4`,
Sum(IF(MONTH(t1.doc_date)=5,t1.doc_price,0)) AS `m5`,
Sum(IF(MONTH(t1.doc_date)=6,t1.doc_price,0)) AS `m6`,
Sum(IF(MONTH(t1.doc_date)=7,t1.doc_price,0)) AS `m7`,
Sum(IF(MONTH(t1.doc_date)=8,t1.doc_price,0)) AS `m8`,
Sum(IF(MONTH(t1.doc_date)=9,t1.doc_price,0)) AS `m9`,
Sum(IF(MONTH(t1.doc_date)=10,t1.doc_price,0)) AS `m10`,
Sum(IF(MONTH(t1.doc_date)=11,t1.doc_price,0)) AS `m11`,
Sum(IF(MONTH(t1.doc_date)=12,t1.doc_price,0)) AS `m12`
FROM
doc_deal_credit_list AS t1
WHERE YEAR(t1.doc_date) < 2020
GROUP BY `year`";

$result = mysqli_query($connect, $sql);

foreach ($result as $key => $detail){
    echo "<b>ปี ".$detail['year']."</b><br>";
    echo "เดือน มกราคม ".number_format($detail['m1'],2)." บาท <br>";
    echo "เดือน กุมภาพันธ์ ".number_format($detail['m2'],2)." บาท <br>";
    echo "เดือน มีนาคม ".number_format($detail['m3'],2)." บาท <br>";
    echo "เดือน เมษายน ".number_format($detail['m4'],2)." บาท <br>";
    echo "เดือน พฤษภาคม ".number_format($detail['m5'],2)." บาท <br>";
    echo "เดือน มิถุนายน ".number_format($detail['m6'],2)." บาท <br>";
    echo "เดือน กรกฏาคม ".number_format($detail['m7'],2)." บาท <br>";
    echo "เดือน สิงหาคม ".number_format($detail['m8'],2)." บาท <br>";
    echo "เดือน กันยายน ".number_format($detail['m9'],2)." บาท <br>";
    echo "เดือน ตุลาคม ".number_format($detail['m10'],2)." บาท <br>";
    echo "เดือน พฤศจิกายน ".number_format($detail['m11'],2)." บาท <br>";
    echo "เดือน ธันวาคม ".number_format($detail['m12'],2)." บาท ";
    echo "<hr>";

}

ผลลัพธ์

ปี 2018
เดือน มกราคม 0.00 บาท
เดือน กุมภาพันธ์ 0.00 บาท
เดือน มีนาคม 0.00 บาท
เดือน เมษายน 0.00 บาท
เดือน พฤษภาคม 0.00 บาท
เดือน มิถุนายน 4,555.00 บาท
เดือน กรกฏาคม 16,160.00 บาท
เดือน สิงหาคม 17,351.00 บาท
เดือน กันยายน 11,034.00 บาท
เดือน ตุลาคม 16,414.00 บาท
เดือน พฤศจิกายน 8,452.00 บาท
เดือน ธันวาคม 8,074.00 บาท

ปี 2019
เดือน มกราคม 7,769.00 บาท
เดือน กุมภาพันธ์ 0.00 บาท
เดือน มีนาคม 0.00 บาท
เดือน เมษายน 0.00 บาท
เดือน พฤษภาคม 0.00 บาท
เดือน มิถุนายน 0.00 บาท
เดือน กรกฏาคม 0.00 บาท
เดือน สิงหาคม 0.00 บาท
เดือน กันยายน 0.00 บาท
เดือน ตุลาคม 0.00 บาท
เดือน พฤศจิกายน 0.00 บาท
เดือน ธันวาคม 0.00 บาท


รวมเทคนิค PHP+SQL << คลิกที่นี่






Share:

บทความที่ได้รับความนิยม

Search

บทความอื่น ๆ