พอดีผมมีฐานข้อมูล ที่มีการเก็บ รายละเอียดของข้อมูลโดยแต่ละ Record ถือเป็นข้อมูล 1 รายการ
และมีปัญหาว่า ผมไม่ได้เขียนโปรแกรมไว้สำหรับ ออกรายงาน เกี่ยวกับการนับจำนวนแยกตามเดือน
จึงได้ลองหา คำสั่ง sql เพื่อกรอง ข้อมูล สำหรับ ใช้งาน เฉพาะเป็นครั้งๆไป
Table ตัวอย่างนะครับ
id | end_date | print | note
------------------------------------
01 | 2018-01-01 | 1 | Null
02 | 2018-02-01 | 1 | Null
03 | 2018-03-01 | 1 | Null
04 | 2018-04-01 | 1 | Null
05 | 2018-05-01 | 1 | Null
06 | 2018-06-01 | 1 | Null
07 | 2018-07-01 | 1 | Null
ในที่นี้เราจะใช้คำสั่ง
SELECT DAY(Column)
SELECT MONTH(Column)
SELECT YEAR(Column)
ไว้เพื่อ กรุ๊ป วันเดือนปี ในที่นี้ ผมต้องการรวมแยกตามเดือน ก็เอามาแค่ เดือนกับปี
และจะใช้คำสั่ง count(Column) และ Group By เพื่อให้ผลของ sql ที่เรา query โชว์รายละเอียดเพิ่มเติ่มให้เราเห็นด้วย
SELECT year(end_date),month(end_date),count(id) FROM logs WHERE YEAR(end_date) = 2018 or year(end_date) = 2019 group by year(end_date),MONTH(end_date)
จากคำสั่ง sql นี้ ผมต้องการ field year,month,และให้ count field id เพื่อนับ
ส่วนเงื่อนไขก็คือ ให้ เอา ปี 2018 และ ปี 2019
โดยให้ จัดกลุ่มตาม ปี ตามด้วย เดือน
ผลลัพท์ที่ได้
ตัวอย่างที่สองครับ แยกข้อมูลตามวันของเดือนนั้นๆ
SELECT year(end_date),month(end_date),day(end_date),count(id) FROM logs WHERE YEAR(end_date) = 2018 AND month(end_date) = 08 group by year(end_date),MONTH(end_date),day(end_date)
ผลลัพธ์ที่ได้
สำหรับใครที่มีปัญหาคล้ายๆผมก็ลองเอาไปประยุคใช้กันนะครับ