ตัวอย่าง SQL นับจำนวนผู้ลงทะเบียนประจำเดือน โดยแยกตามวันประจำสัปดาห์ GROUP BY SUM WEEKDAY

โดย SONGCHAI SAETERN
ตัวอย่าง SQL นับจำนวนผู้ลงทะเบียนประจำเดือน โดยแยกตามวันประจำสัปดาห์ (จันทร์ - อาทิตย์)

-- WEEKDAY(date)
-- 0 = Monday, 1 = Tuesday, 2 = Wednesday, 3 = Thursday, 4 = Friday, 5 = Saturday, 6 = Sunday
SELECT
begin_date
, SUM(WEEKDAY(begin_date) = 0) AS 'วันจันทร์'
, SUM(WEEKDAY(begin_date) = 1) AS 'วันอังคาร'
, SUM(WEEKDAY(begin_date) = 2) AS 'วันพุธ'
, SUM(WEEKDAY(begin_date) = 3) AS 'วันพฤหัสฯ'
, SUM(WEEKDAY(begin_date) = 4) AS 'วันศุกร์'
, SUM(WEEKDAY(begin_date) = 5) AS 'วันเสาร์'
, SUM(WEEKDAY(begin_date) = 6) AS 'วันอาทิตย์'
FROM
tb_register
WHERE
begin_date BETWEEN '2020-02-01' AND '2020-02-29'
GROUP BY
WEEKDAY(begin_date)


1. เริ่มจาก แสดงข้อมูลผู้ใช้งานโดย WHERE ค้นหาเฉพาะช่วงวันที่ของเดือนที่ต้องการ



2. แสดงตัวเลขหลัก วันประจำสัปดาห์ ด้วยฟังก์ชั่น WEEKDAY()



3. มาจัดกลุ่มด้วย GROUP BY ด้วยฟังก์ชั่น WEEKDAY() ก็จะเหลือแค่ตัวเลข 3 ค่า ก็คือ วันพฤหัสฯ วันศุกร์ และวันเสาร์




4. มาลองนับจำนวนของแต่ละวัน ด้วยฟังก์ชั่น COUNT(*) จะเห็นยอดจำนวนผู้ลงทะเบียนในแต่ละวัน



5. ถ้าหากว่าจะนำไปใช้เลย ก็จะต้องเขียน PHP เพิ่มเติมเพื่อตรวจสอบเงื่อนไข แต่ถ้าต้องการให้จบที่ SQL ก็เพียงแค่ใช้ SUM() และภายในก็ตรวจสอบเงื่อนไขว่า WEEKDAY() ตรงกับ ตัวเลขวันประจำสัปดาห์ที่ต้องการหรือไม่ ก็จะได้คอลัมน์แยกกัน 7 คอลัมน์ตามวันทร์ที่ต้องการ






PHP CI MANIA - PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
 http://fastcoding.phpcodemania.com/index.php/#purchase-order
ราคาสุดคุ้ม  1,500  บาท
http://fastcoding.phpcodemania.com