ขอโทษสำหรับชื่อที่ไม่ดีฉันไม่แน่ใจว่าชื่อเรื่องนี้จะเป็นอะไรดี
นี่คือข้อมูลที่ฉันกำลังทำงานกับ (มุมมองแบบง่าย) ของข้อมูลนี้
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
ฉันต้องการคำนวณอัตราร้อยละของค่าคอมมิชชั่นทั้งหมดซึ่งแต่ละตัวแทนมีหน้าที่รับผิดชอบ
ดังนั้นสำหรับ Agent Smith เปอร์เซ็นต์จะถูกคำนวณเป็น (Agent Smith's commission / Sum(commission)*100
ดังนั้นข้อมูลที่คาดหวังของฉันจะเป็น
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
ฉันมีฟังก์ชั่นคืนค่าคอมมิชชั่นสำหรับแต่ละตัวแทน (Commission/Sum(Commission))*100
ฉันมีฟังก์ชั่นอื่นกลับเป็นร้อยละ ปัญหาคือSum(commission)
ได้รับการคำนวณสำหรับแต่ละแถวและทุกครั้งที่แบบสอบถามนี้จะถูกเรียกใช้บน Data Warehouse ชุดข้อมูลจะค่อนข้างใหญ่ (ปัจจุบันอยู่ภายใต้ 2000 ระเบียน) และค่อนข้างเป็นวิธีที่ไม่ดี (IMO) )
มีวิธีการที่Sum(Commission)
ไม่มีการคำนวณสำหรับทุกแถวที่ถูกดึงข้อมูลหรือไม่?
ฉันกำลังคิดอะไรบางอย่างในบรรทัดของแบบสอบถาม 2 ส่วนส่วนแรกจะดึงข้อมูลsum(commission)
เป็นตัวแปร / ชนิดของแพคเกจและส่วนที่สองจะอ้างอิงค่าที่คำนวณล่วงหน้านี้ แต่ฉันไม่แน่ใจว่าฉันจะทำสิ่งนี้ได้อย่างไร
ฉันถูก จำกัด ให้ใช้ SQL และฉันกำลังรันบน Oracle 10g R2