Tag: distinct

  • หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน

    สมมติว่าเรามีข้อมูลอยู่แบบซ้ายมือของรูป แต่อยากให้ผลลัพธ์รวมเป็นข้อความเดียวกันกลายเป็นแบบด้านขวามือ เราจะใช้วิธีไหนได้บ้าง? มาดูกันครับ คิดว่าบทความสั้นๆ อันนี้น่าจะช่วยเปิดหูเปิดตาให้เพื่อนๆ ได้รู้จักวิธีแก้ปัญหาที่หลากหลายมากขึ้นนะครับ

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 1

    ก่อนอื่นเราทำข้อมูลให้เป็น Table (Insert->Table หรือ Ctrl+T) ก่อน จะได้รองรับ Data mี่เพิ่มขึ้นได้ง่ายๆ ครับ และตั้งชื่อว่า MyData

    วิธีใช้สูตรของ Excel 365 รวมเป็นข้อความเดียวกัน

    วิธีที่เข้าใจง่ายที่สุดเลย ก็คือสูตรของ Excel 365 ซึ่งมีความสามารถแบบ Array Formula ที่ขี้โกงและใช้ง่ายกว่าสูตรใน Version เก่ามากๆ

    โดยเราจะเริ่มจากเอา Group ทั้งหมดออกมาก่อนด้วย UNIQUE (และถ้าอยากเรียงด้วยก็ซ้อน SORT เข้าไปก็ได้)

    =UNIQUE(MyData[Group])

    หรือ

    =SORT(UNIQUE(MyData[Group]))
    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 2

    จากนั้นเราจะทำการคำนวณ item แต่ละอันภายใต้แต่ละ Group ออกมาด้วยฟังก์ชัน FILTER ดังนี้

    =FILTER(MyData[Item],MyData[Group]=D2)
    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 3

    แต่เราอยากจะให้เอาข้อมูลที่ Filter มาได้ เอามาเชื่อมต่อเป็นข้อความเดียวกัน จึงใช้ TEXTJOIN มาช่วยอีกที

    =TEXTJOIN(", ",TRUE,FILTER(MyData[Item],MyData[Group]=D2))
    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 4

    ถ้าเรา Copy สูตรมาข้างล่างก็จะได้ครบทุกตัว

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 5

    สูตรนี้เข้าใจง่าย แต่ก็มีข้อเสียว่า สูตรด้านขวาสุดมันไม่งอก item ของ group ใหม่ออกมาอัตโนมัติเมื่อมี Group เพิ่ม ถ้าอยากให้งอกสูตรจะยากกว่านี้ ซึ่งผมขอเก็บปัญหานี้ไว้ก่อนนะ

    วิธีใช้ DAX รวมเป็นข้อความเดียวกัน

    ก่อนอื่นเราก็เอาข้อมูล MyTable ต้นฉบับเข้าไป Pivot แบบ Data Model ซะ เพื่อให้มันรองรับการใช้ DAX

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 6

    จากนั้นเราลาก Group ไปที่ Rows แล้ว คลิ๊กขวาที่ชื่อตารางแล้ว + Add Measure…

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 7

    จากนั้นตั้งชื่อ Measure แล้วเขียนสูตรดังนี้ ก็จบเลย

    =CONCATENATEX(MyData,[Item],", ")

    ซึ่งภายใต้แต่ละ group มันก็จะมองเห็นเฉพาะ item ของตัวมันเอง (Concept ของ Filter Context) ผมจึงสามารถใช้ CONCATENATEX รวมทุก item เข้าด้วยกันในลักษณะเดียวกับ TEXTJOIN ของสูตร Excel ได้เลย โดยไม่ต้องมีฟังก์ชัน FILTER แบบสูตร Excel อีก

    แต่ถ้าหากคิดว่า รายการ item ย่อย อาจมีซ้ำกันได้ ก็ให้ใส่ DISTINCT ครอบ MyData[Item] เพื่อให้แน่ใจว่าได้ item ย่อยที่ไม่ซ้ำกันก่อน

    =CONCATENATEX(DISTINCT(MyData[Item]),[Item],", ")
    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 8

    จากนั้นเราจะได้ Measure ใหม่ที่สัญลักษณ์ fx ก็ให้ลากลง Values ได้เลย

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 9

    การใช้ CONCATENATEX จริงๆ แล้วมีความยืดหยุ่นกว่า TEXTJOIN มากๆ ตรงที่สามารถกำหนดการเรียง item ได้อีกว่าจะให้เรียงตามอะไร เรียงทิศทางไหน เช่น ให้เรียงตามยอดขายแบบมากไปน้อยก็ยังได้ ดังนั้นผมจึงบอกได้เลยว่าวิธีใช้ DAX คือสุดยอดที่สุดแล้วครับ

    วิธีใช้ Power Query รวมเป็นข้อความเดียวกัน

    หากใช้ Power Query ก็ให้ Get Data from Table เข้าไปก่อนเลยครับ

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 10

    จากนั้นทำการ Group by แบบ all rows ดังนี้

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 11

    ผลลัพธ์มันจะทำให้เหลือ Group แบบไม่ซ้ำกัน แต่ภายใต้แต่ละ Group จะมี Table ที่มองเห็นเฉพาะทุกคอลัมน์ใน Group นั้นเท่านั้น (ซึ่งดูได้หากคลิ๊ก “ข้างๆ คำว่า Table” ของแต่ละ Group)

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 12

    ทีนี้เราต้องการผลลัพธ์เฉพาะคอลัมน์ item ให้ออกมาเป็น list ดังนั้นผมแนะนำให้ Add Custom Column ใหม่แล้วใส่สูตรดังนี้ เพื่อเอามาเฉพาะคอลัมน์ item จากตารางใน all (ซึ่งการเขียน [ ] เป็นสัญลักษณ์การอ้างอิง Record ในภาษา M ซึ่งพิมพ์เล็กพิมพ์ใหญ่ต้องเป๊ะนะ)

    =[all][Item]
    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 13

    พอลิ๊กดูที่ข้างๆ คำว่า List จะเห็นเฉพาะคอลัมน์ Item แล้ว

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 14

    จากนั้นเราจะสามารถคลิ๊กที่มุมขวาบนของคอลัมน์ แล้วเลือก Extract Values… เพื่อรวม list เข้าด้วยกันได้เลย

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 15

    จากนั้นเราเลือกตัวคั่นได้ แต่ผมอยากให้คั่นด้วย comma และมีเว้นวรรคด้วย ก็เลยต้องเลือกแบบ Custom

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 16

    แล้วมันก็จะแสดงผลลัพธ์ออกมาได้ในที่สุด

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 17

    ถ้าเราไม่ต้องการคอลัมน์ all ก็ลบทิ้งไปได้เลย จากนั้นก็ Close & Load เอาผลลัพธ์ออกมาได้เลย

    สรุป

    หลากวิธีเอาข้อมูลในกลุ่มเดียวกันไปรวมเป็นข้อความเดียวกัน 18

    ส่วนตัวแล้ว ถ้าการแสดงผลแบบนี้คือผลลัพธ์สุดท้ายที่ต้องการ ผมจะเลือกใช้วิธี DAX ก่อน เพราะเป็นวิธีที่ง่าย และยืดหยุ่นที่สุดในความคิดของผม แต่ถ้าผมต้องรวมรายการแบบนี้ เพื่อนำไป Merge หรือไปทำอะไรบางอย่างกับตารางอื่นต่ออีก ผมก็จะใช้ Power Query ทำครับ

    อย่างไรก็ตามทั้งวิธี DAX และ Power Query มันจะต้องมีการ Refresh ข้อมูลถ้าข้อมูลต้นทางเปลี่ยน ซึ่งวิธีใช้สูตรไม่ต้อง Refresh เลย มันจะเปลี่ยนอัตโนมัติครับ (แค่ตอนนี้สูตรที่ผมใช้มันยังไม่งอก item ของ group ใหม่เอง)

    ซึ่งจริงๆ แล้วยังมีวิธีอื่นๆ ที่ทำงานแบบนี้ได้อีกนะครับ เช่น VBA ก็ทำได้ ดังนั้นใครมีวิธีอื่นเจ๋งๆ อีก ก็ comment แนะนำมาได้เลยนะครับ

  • การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX

    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX

    ตามปกติแล้ว ในช่อง Values ของ Pivot Table จะแสดงข้อมูลออกมาได้แค่ตัวเลขเท่านั้นไม่สามารถทำเป็นข้อความได้ ที่เป็นแบบนั้นเพราะมันถูกสรุปด้วยการ Sum, Count, Average, Max, Min ปกติไงล่ะ… แต่ใน Power Pivot เราสามารถเขียน Measure ได้ด้วยฟังก์ชัน DAX อะไรก็ได้ ดังนั้นเราก็สามารถสรุปผลลัพธ์ที่เป็น Text ได้แล้วล่ะ และในบทความนี้ก็จะสอนวิธีทำให้ครับ

    Warning : บทความนี้เริ่มมีความซับซ้อน

    ในบทความนี้อาจมีสูตรหลายตัวที่ค่อนข้างมีความซับซ้อน เพราะเกี่ยวข้องกับ Concept หลายๆ อย่างของ DAX ที่ใน Excel ไม่มี เช่นเรื่องของ Table Function หรือสูตรที่ให้ผลลัพธ์ออกมาเป็นตาราง รวมถึง Concept ของการคำนวณ ซ้ำๆ แต่ละแถวของตารางด้วย Expression ที่กำหนด (เรียกว่า Iterate) ซึ่งค่อนข้างใช้จินตนาการสูงพอควร

    การจะเข้าใจอย่างลึกซึ้งว่ามันทำงานยังไง คุณอาจต้องศึกษาการทำงานของ DAX เพิ่มเติมด้วยนะครับ เพราะมันอธิบายสั้นๆ ได้ยากพอควร

    ซึ่ง Tips ที่ผมอยากแนะนำ คือ เรียน DAX ผ่าน Power BI จะง่ายกว่า Excel เพราะใน Power BI มีตัวช่วยเยอะกว่า ซึ่งเรียนใน Power BI แล้วสุดท้ายก็เอามาใช้ใน Excel ได้อยู่ดี (ผมเองก็เรียน DAX จาก Power BI เหมือนกัน แล้วตอนนี้ผมก็เอามาใช้ใน Excel ได้)

    หากใครสนใจ ใครสนใจก็ลองไปดูได้ครับ (ตอนนี้กำลังลดราคาพิเศษอยู่ด้วย จาก 2290 เหลือ 1790 บาท หมดเขต 29 กค. 63)

    เอาล่ะ หมดช่วงขายของแล้ว มาเริ่มสิ่งที่น่าสนใจกันจริงๆ ดีกว่า 555

    มาดูกันว่าเราสามารถใช้ DAX เขียนสูตรเพื่อทำให้ช่องสรุปแสดงข้อความออกมาในลักษณะไหนได้บ้าง

    เอา Transaction ID ล่าสุดมาแสดง

    เราสามารถใช้ฟังก์ชัน LASTNONBLANK มาช่วยในกรณีนี้ได้ครับ

    LASTNONBLANK ( <ColumnName>, <Expression> )

    LASTNONBLANK จะทำงานแบบ Iterator เช่นเดียวกับพวก SUMX แต่มีความสามารถในการเช็ค Expression สำหรับแต่ละแถวของ <ColumnName> โดยเรียงตาม Sort Order ของ Column นั้นๆ แล้วเอาค่าสุดท้ายที่ <ColumnName> และ <Expression> ไม่ Blank กลับมา ซึ่งผลลัพธ์จะกลับมาเป็นตารางที่มี 1 แถว 1 คอลัมน์

    Tips : เมื่อ DAX ให้ผลลัพธ์เป็นตารางที่มี 1 แถว 1 คอลัมน์ มันสามารถถูกมองให้เป็นผลลัพธ์เป็น Scalar Value หรือค่าตามปกติได้ด้วย แปลว่าผมสามารถแสดงผลลัพธ์ด้วยค่านี้ได้เลย

    แปลว่าผมสามารถให้มันเอาเลข TXID ล่าสุดมาได้เพราะว่า TXID เราเรียงเป็นเลข Running อยู่แล้วจึงใช้ได้

    =LASTNONBLANK(TXData[TXID], TXData[TXID])

    หรือจะใส่ <Expression> เป็นเลข 1 ไปเลยก็ยังได้ครับ เพื่อให้มันเช็คแค่ TXData[TXID] อย่างเดียว

    =LASTNONBLANK(TXData[TXID],1)

    แค่นี้เราก็จะได้ Transaction ID ล่าสุดแล้วล่ะ 555

    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX 19

    ถ้าเกิดใครอยากได้ Transaction ID แรกสุด ก็จะมีตัวคล้ายๆ กันให้ใช้ นั่นก็คือ FIRSTNONBLANK ( <ColumnName>, <Expression> ) นั่นเองครับ

    เอา Product ล่าสุดมาแสดง

    สำหรับ “ชื่อProduct” เราไม่สามารถใช้ LASTNONBLANK มาช่วยได้ เพราะ คอลัมน์ “ชื่อProduct” มันเรียงตาม A-Z (เมื่อคอลัมน์นี้ไม่ได้เรียงตามเวลา คำว่า LAST เมื่อใช้กับชื่อProduct มันจึงไม่มี concept ของคำว่า “ล่าสุด” ) แต่เราจะเอาเจ้า [TXID ล่าสุด] ที่ได้จากข้อที่แล้วมาช่วยทำงานต่อไปด้วยการใช้ LOOKUPVALUE แบบนี้

    LOOKUPVALUE ( <Result_ColumnName>, <Search_ColumnName>, <Search_Value>)

    LOOKUPVALUE สามารถเอาผลลัพธ์ในคอลัมน์ <Result_ColumnName> ที่ต้องการกลับมา โดยค้นหาข้อมูล <Search_Value> ในคอลัมน์ <Search_ColumnName> นั่นเอง

    ซึ่งจะเห็นว่า Concept การเขียนสูตรคล้ายๆ ฟังก์ชัน LOOKUP ใน Excel เลย แต่ LOOKUPVALUE มันต้องเจอผลลัพธ์แบบเป๊ะๆ เท่านั้น ต่างจาก LOOKUP ใน Excel ที่ทำการค้นหาแบบ Approximate Match นะ

    สรุปแล้ว ใน เคสนี้เราเขียนได้ว่า

    =LOOKUPVALUE(TXData[สินค้า],TXData[TXID],[TXID ล่าสุด])

    แปลว่าให้เอา [TXID ล่าสุด]ไปหาในคอลัมน์ TXData[TXID] จากนั้นให้เอาค่า TXData[สินค้า] ในแถวเดียวกันกลับมา

    ซึ่งจะช่วยให้เราได้ผลลัพธ์ที่ต้องการได้แล้ว ซึ่งสามารถประยุกต์ใช้วิธีนี้กับคอลัมน์ไหนๆ ก็ได้ จริงมะ?

    สรุป Value ข้อความ Text

    เอาชื่อลูกค้าทุกคนมารวมกันแยกด้วยตัวคั่น

    เราสามารถใช้ฟังก์ชัน CONCATENATEX มาช่วยรวมข้อมูล Text แล้วใส่ Delimiter เป็น ได้ ซึ่งมันจะทำงานคล้ายๆ SUMX แต่ต่างกันที่ตอนจบ ตรงที่ SUMX เอาข้อมูลใน Expression ทุกตัวมา SUM กัน แต่เจ้า CONCATENATEX นั้นเอา Expression ทุกตัวมาเชื่อมเป็นข้อความเดียวกันแล้วคั่นด้วย Delimiter ซึ่งสามารถเรียงลำดับการเชื่อมได้ด้วยนะ

    CONCATENATEX ( <Table>, <Expression>, [<Delimiter>] , [<OrderBy_Expression>] , [<Order>] )
    • ฟังก์ชันนี้จะทำการ Iterate แต่ละแถวของ <table> ด้วยการเอา <expression> มาเชื่อมกันด้วย [delimiter]
    • สำหรับ <table> นั้นเราใช้อีกฟังก์ชัน นั่นคือ DISTINCT มาช่วย ซึ่งมีความสามารถทำให้เหลือเฉพาะ item ที่ไม่ซ้ำกันเท่านั้นแล้วคืนค่ากลับมาเป็นตาราง (เรียกว่า Table Function ซึ่งใน DAX มีหลายตัวมากๆ)
    • โดยในที่นี้ใส่เป็น DISTINCT(TXData[ลูกค้า]) เพื่อให้ได้รายชื่อลูกค้าแบบไม่ซ้ำกันนั่นเอง

    สรุปแล้ว เราจะเขียนสูตรแบบนี้

    =CONCATENATEX(DISTINCT(TXData[ลูกค้า]),[ลูกค้า],"/")
    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX 20

    ถ้าอยากให้เรียงตามคอลัมน์ลูกค้าเอง (ซึ่งก็เรียงตาม A-Z) ก็สามารถระบุคอลัมน์ที่ใช้ Sort ได้ และวิธีการ Sort ได้

    =CONCATENATEX(DISTINCT(TXData[ลูกค้า]),[ลูกค้า],"/",[ลูกค้า],ASC)
    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX 21

    List ชื่อลูกค้าที่สร้างยอดขายมากสุด Top3

    เราสามารถใช้ TOPN มาช่วยสร้างผลลัพธ์เป็น Table ที่ Filter ให้เหลือผลลัพธ์ N ตัวเรียงตาม <OrderBy_Expression> ได้ดังนี้

    TOPN ( <N_Value>, <Table> , [<OrderBy_Expression>] , [<Order>] )

    จากนั้นเอาไปใช้ในส่วนของ <table> ของ CONCATENATEX

    =CONCATENATEX(TOPN(3,DISTINCT(TXData[ลูกค้า]),[TotalSales],DESC),[ลูกค้า],"/",[TotalSales],DESC)

    และเราสามารถรวมยอดขายเฉพาะ TopN Customer ได้ด้วยการใช้ SUMX มาช่วยดังนี้

    =SUMX(TOPN(3,DISTINCT(TXData[ลูกค้า]),[TotalSales],DESC),[TotalSales])

    ตัว [TotalSales] จะถูกคิดสำหรับข้อมูลแต่ละแถวของ TOPN ซึ่งจะเกิด Effect ที่เรียกว่า Context Transition ที่จะช่วยให้คิดข้อมูลเป้นยอดขายของลูกค้าแต่ละคนนั้นๆ ได้

    สรุปออกมาได้ดังนี้

    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX 22

    อย่างไรก็ตามคำสั่ง TOPN ถ้าเกิดมีลูกค้ายอดขายเท่ากันเป๊ะ มันอาจจะออกมามากกว่า N ที่เรากำหนดก็ได้ เช่น

    Sales ค ขายของเล่น มีลูกค้าที่มียอดเท่ากันดังรูป

    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX 23

    ทำให้ Sales ค ขายของเล่น มัน List ออกมา 4 คน คือ C00004, C00011, C00012, C00013 และได้ยอดรวม TOPN 3,150 บาท

    ถ้าเราอยากได้ TOP3 แบบที่ได้ 3 จริงๆ ไม่ให้เกินมา

    จะต้องมีการจัดการเรื่องค่าซ้ำ เช่น วิธีที่ง่ายที่สุดคืออาจจะบวกค่า Random ที่น้อยมากๆ เข้าไปเพื่อให้ไม่มีเลขที่เท่ากันเป๊ะๆ เช่น

    Listลูกค้าTop3 (แบบได้ 3 จริงๆ)

    =CONCATENATEX(TOPN(3,DISTINCT(TXData[ลูกค้า]),[TotalSales]+RAND()/1000,DESC),[ลูกค้า],"/",[TotalSales],DESC)

    Top3CustSales (แบบมาจาก 3 คนจริงๆ)

    =SUMX(TOPN(3,DISTINCT(TXData[ลูกค้า]),[TotalSales]+RAND()/1000,DESC),[TotalSales])

    สรุปแล้วจะได้แบบนี้

    การใช้ Excel Power Pivot ตอนที่ 2 : ทำผลสรุป Value ให้เป็นข้อความด้วย DAX 24

    Sales ค ขายของเล่น จะได้แค่ 3 คน คือ C00004, C00011, C00012 (ซึ่งจะได้ 12 หรือ 13 มันสุ่มเอานะ…)

    และนี่คือตัวอย่างของการใช้ DAX เพื่อสรุปข้อมูลออกมาเป็นข้อความครับ จะเห็นว่าสามารถพลิกแพลงได้มากกว่า Pivot Table ธรรมดาๆ เยอะเลย และนี่แหละที่เป็นหนึ่งในสาเหตุที่บอกว่า Power BI นั้นเจ๋งมากๆ ก็เพราะมันมี DAX แบบนี้ยังไงล่ะ

    ตอนต่อไป

    ในตอนต่อไปเริ่มจะเริ่มทำงานกับตารางที่มากกว่า 1 อัน โดยที่ตารางหลายๆ อันนั้นจะมีการเชื่อมความสัมพันธ์กันเป็นสิ่งที่เรียกว่า Data Model นั่นเอง ใช่แล้วล่ะ เรากำลังจะได้เรียนสิ่งที่เป็น Data Model กันจริงๆ ซักที แล้วคุณจะได้เห็นพลังที่แท้จริงของสิ่งที่เรียกว่า Data Model ว่ามันเจ๋งแค่ไหนครับ

    สารบัญซีรีส์ Power Pivot

  • สารพัดวิธีนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์

    สารพัดวิธีนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์

    อย่างที่ผมเคยบอกไปแล้วว่าการแก้ปัญหาหนึ่งๆ ใน Excel นั้นสามารถทำได้หลายวิธีมาก ซึ่งปัญหาการนับข้อมูลแบบไม่ซ้ำกันในคอลัมน์ก็เช่นกัน จะมีวิธีไหนบ้างมาดูกันครับ!!

    สถานการณ์ของเราคือ…

    สมมติว่าเรามีข้อมูลอยู่ตารางหนึ่ง เป็นตารางการขายของในช่วงเดือนที่ผ่านมา…
    ลักษณะข้อมูลคือ 1 บรรทัดเป็น 1 order ซึ่งแต่ละ order ก็จะมี Sales นักขายกำกับอยู่ว่าชื่ออะไร

    โจทย์คือ อยากรู้ว่ามี Sales อยู่กี่คนที่ทำการขายสินค้าได้ในช่วงเวลาที่เราเก็บข้อมูลมา
    แต่ปัญหาคือ ชื่อของ Sales สามารถซ้ำกันได้ในหลายๆ บรรทัด ซึ่งถ้าซ้ำกันเราต้องการจะนับแค่ 1

    สมมติข้อมูลเป็นแบบนี้ (มีแค่ 10 บรรทัดพอ) => distinct-count

    distinct-data

    ถ้าเราเจอปัญหาแบบนี้ จะแก้ไขได้ยังไงมาดูกันครับ!

    (more…)