ผมมีข้อมูลดิบตามตารางนี้ครับ
https://docs.google.com/open?id=0BxtQXMM0lbHJaXhzalRNV2J1V2M
ซึ่งเก็บข้อมูล หมายเลขชื่อคน (HN) จำนวนครั้งที่ทำ (Visit) และคะแนนที่ได้ (Total score) เป็นแต่ละ คอลัม
ผมจะเขียนอัลกอริทึม อย่างไรถึงจะใช้นับได้ว่า การมาพบครั้งต่อมาได้คะแนนดีกว่าครั้งแรก (ครั้งที่ 2 ได้มากกว่า 1 หรือครั้งที่ 3 ได้มากกว่า 2)
ให้แนวทางคร่าวๆ ก็พอครับ
"จำนวนครั้งที่ทำ"
neizod Sun, 17/06/2012 - 05:23
ไม่ได้ช่วยอะไรเลยแฮะ 55 แต่ดูแล้วก็เรียงคะแนนตามคน-ครั้งที่ทำเรียบร้อย ที่เหลือก็ไม่น่ายากแล้วฮะ
ลองนิยามเหตุการณ์นี้หน่อยครับ
saknarak Sun, 17/06/2012 - 08:12
ลองนิยามเหตุการณ์นี้หน่อยครับ ว่าดีขึ้นหรือเปล่า
เพราะครั้งที่ 3 ดีกว่าครั้งที่ 2 แต่จริง ๆ แล้วแย่กว่าครั้งแรก จะให้สรุปว่าดีขึ้นหรือเปล่าครับ
ถ้าสรุปได้แล้ว อัลกอไม่ยากครับ แค่ข้อมูลเรียงตาม HN, Visit ก็สามารถเปรียบเทียบได้แล้ว
ปัญหาข้อนี้ จัดเป็นปัญหา
Invisible Force Sun, 17/06/2012 - 12:24
ปัญหาข้อนี้ จัดเป็นปัญหา Classic ครับ ถ้าหากต้องแก้ด้วยคำสั่ง SQL เพียวๆ วิธีแก้ปัญหานั้น ขึ้นอยู่กับว่าข้อมูลถูกเก็บไว้ที่ไหนและจะใช้อะไรแก้ปัญหาครับ 1) ใช้ Excel: ก็เพียงใส่สูตรอ้างอิงกับบรรทัดก่อนหน้าเท่านั้น (แต่ต้อง Sort by HN,VisitOrder ก่อน) 2) ใช้ คำสั่ง SQL (เนื่องจากปกติข้อมูลมักอยู่ใน Database อยู่แล้ว) เนื่องจากคำสั่ง SQL จะประมวลผลเฉพาะภายใน record เดียวกันเท่านั้น ดังนั้น เราต้อง Join ให้เกิดการ Shift ดึงข้อมูลมาไว้ record เดียวกันก่อนครับ ดังนี้ SELECT A.*, B.*, A.totalscore-B.totalscore FROM Stage as A LEFT JOIN Stage as B ON A.hn=B.hn AND A.visit=B.visit+1 เพียงเท่านี้ เราก็จะสามารถคำนวณหาค่าแตกต่างระหว่างครั้งก่อนได้แล้ว โดยเพิ่ม A.totalscore-B.totalscore เข้าไป ต่อจากนั้น เราก็จะสามารถ WHERE หา HN ใดบ้าง ที่ได้ TotalScore เพิ่มขึ้น หรือลดลงจากเดิมต่อไปได้ครับ 3) ใช้ Programming Languages อันนี้ความเห็นข้างบนได้กล่าวไว้แล้วครับขอบคุณครับ ทำได้ซักพักละครับ
Nozomi Sun, 17/06/2012 - 14:01
ขอบคุณครับ ทำได้ซักพักละครับ แต่ "คิดเอาเอง" ว่าโค๊ดตัวเองเขียนมันดู "เห่ยๆ" เลยอยากขอดูแนวทางที่เขียนแล้ว "สั้นลง" บ้าง ขอบคุณอีกทีครับ อิอิ ได้ไอเดียเยอะดี
โจทย์ข้อนี้
Invisible Force Mon, 18/06/2012 - 12:46
โจทย์ข้อนี้ ถ้าจะให้ยากขึ้นสำหรับการแก้ด้วย SQL นะครับ ต้องตัดค่า Visit ออกครับ .. โดยบอกว่าข้อมูลดิบเก็บเพียง วันที่, ลูกค้า, คะแนน เท่านั้น .. และให้ทำการเช็คเองว่ามีการเปลี่ยนแปลงคะแนนดีขึ้นจากครั้งก่อนหรือไม่ โดยใช้เพียงวันที่เท่านั้น