ตัวอย่าง SQL นับจำนวนผู้ลงทะเบียนประจำเดือน โดยแยกตามวันประจำสัปดาห์ (จันทร์ - อาทิตย์)
1. เริ่มจาก แสดงข้อมูลผู้ใช้งานโดย WHERE ค้นหาเฉพาะช่วงวันที่ของเดือนที่ต้องการ
2. แสดงตัวเลขหลัก วันประจำสัปดาห์ ด้วยฟังก์ชั่น WEEKDAY()
3. มาจัดกลุ่มด้วย GROUP BY ด้วยฟังก์ชั่น WEEKDAY() ก็จะเหลือแค่ตัวเลข 3 ค่า ก็คือ วันพฤหัสฯ วันศุกร์ และวันเสาร์
4. มาลองนับจำนวนของแต่ละวัน ด้วยฟังก์ชั่น COUNT(*) จะเห็นยอดจำนวนผู้ลงทะเบียนในแต่ละวัน
5. ถ้าหากว่าจะนำไปใช้เลย ก็จะต้องเขียน PHP เพิ่มเติมเพื่อตรวจสอบเงื่อนไข แต่ถ้าต้องการให้จบที่ SQL ก็เพียงแค่ใช้ SUM() และภายในก็ตรวจสอบเงื่อนไขว่า WEEKDAY() ตรงกับ ตัวเลขวันประจำสัปดาห์ที่ต้องการหรือไม่ ก็จะได้คอลัมน์แยกกัน 7 คอลัมน์ตามวันทร์ที่ต้องการ
-- 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
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ความคิดเห็น
แสดงความคิดเห็น