รับทําเว็บไซต์ รับทําseo
บทความที่น่าสนใจ

บทความ ที่น่าสนใจ

การ COUNT() และ GROUP BY จากสองตาราง

    มาดูความสามารถของ Group By กับการ Count

    เราก็คงพอเข้าใจกับการทำ Group By มาแล้วนะครับ สำหรับใครที่ยังไม่เข้าใจว่า Group By คิดยังไงขอให้กลับไปทำความเข้าใจกันก่อนครับ


    งั้นเรามาต่อกันเลยครับ ... ส่วนใหญ่การ Group By เราจะนำความสามารถของมัน มาใช้ร่วมกับ Function ต่างๆ เช่น การนับ(Count), การรวม(Sum), หาค่าสูงสุด(Max), หาค่าต่ำสุด(Min), หาค่ากลาง (Avg) เป็นต้น


    โดยที่ทำงานกับ Record ที่ทำ Group By กันได้ เช่นการ Count คือ การนับจำนวน Record หาก เรา Group By ได้ 3 Record ผลที่จะได้จากการใช้ Count คือ 3  ... คนเขียนก็ งง คนอ่านไม่รู้ งง หม้าย 

    ตาราง test_table

    field_a field_b field_c
    123 ทดสอบ 1
    123 ทดสอบ 2
    123 ทดสอบ 2
    123 ทดสอบ 2
    123 ทดสอบ 3


    หากเราต้องการนับจำนวน Record ที่มีค่าเหมือนกัน ใช้คำสั่ง
    SELECT field_a, field_b, field_c, COUNT(*) as count_rec FROM test_table  GROUP BY field_a, field_b, field_c;

    ผลลัพธ์ที่ได้ คือ

    field_a field_b field_c count_rec
    123 ทดสอบ 1 1
    123 ทดสอบ 2 3
    123 ทดสอบ 3 1

     

    จะเห็นว่าจำนวน Record จะถูกนับใน Field count_rec โดยจะนับจำนวน Record ตามที่ Group By ได้

     

    เพิ่มเติม รูปแบบการใช้งาน COUNT

    COUNT(column_name) ระบุชื่อคอลมน์ที่ต้องการนับแทนที่ column_name จะนับรวมเร็คคอร์ดทั้งหมด ที่ column_name ไม่เป็น NULL

    SELECT COUNT(column_name) FROM table_name


    COUNT(*) ใช้ * แทน column_name จะเป็นการนับทุก record (รวม NULL)

    SELECT COUNT(*) FROM table_name


    COUNT(DISTINCT column_name) เป็นการนับเฉพาะ record ที่ column_name ไม่ซ้ำกัน

    SELECT COUNT(DISTINCT column_name) FROM table_name