ฉันมีตารางที่ดูเหมือนผู้โทรรายนี้ 'makerar'
cname | wmname | avg
--------+-------------+------------------------
canada | zoro | 2.0000000000000000
spain | luffy | 1.00000000000000000000
spain | usopp | 5.0000000000000000
และฉันต้องการเลือกเฉลี่ยสูงสุดสำหรับแต่ละชื่อ
SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;
แต่ฉันจะได้รับข้อผิดพลาด
ERROR: column "makerar.wmname" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;
ดังนั้นฉันทำสิ่งนี้
SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname, wmname;
อย่างไรก็ตามสิ่งนี้จะไม่ให้ผลลัพธ์ที่ต้องการและแสดงผลลัพธ์ที่ไม่ถูกต้องด้านล่าง
cname | wmname | max
--------+--------+------------------------
canada | zoro | 2.0000000000000000
spain | luffy | 1.00000000000000000000
spain | usopp | 5.0000000000000000
ผลลัพธ์ที่แท้จริงควรเป็น
cname | wmname | max
--------+--------+------------------------
canada | zoro | 2.0000000000000000
spain | usopp | 5.0000000000000000
ฉันจะแก้ไขปัญหานี้ได้อย่างไร
หมายเหตุ: ตารางนี้เป็นมุมมองที่สร้างขึ้นจากการดำเนินการก่อนหน้า
wmname="usopp"
คาดหวังและไม่ได้ตัวอย่างเช่นwmname="luffy"
?