คำถามติดแท็ก greatest-n-per-group

ค้นหาแถวที่มีค่ามากที่สุด / น้อยที่สุดต่อกลุ่ม

4
จะเลือก id ด้วย max date group ตามหมวดหมู่ใน PostgreSQL ได้อย่างไร?
ตัวอย่างเช่นฉันต้องการเลือก id ที่มีกลุ่มวันที่สูงสุดตามหมวดหมู่ผลลัพธ์คือ 7, 2, 6 id category date 1 a 2013-01-01 2 b 2013-01-03 3 c 2013-01-02 4 a 2013-01-02 5 b 2013-01-02 6 c 2013-01-03 7 a 2013-01-03 8 b 2013-01-01 9 c 2013-01-01 ฉันขอทราบวิธีการทำใน PostgreSQL ได้ไหม

1
รับบันทึกที่มี <สิ่งใด ๆ > สูงสุด / น้อยที่สุดต่อกลุ่ม
ต้องทำอย่างไร? ชื่อเดิมของคำถามนี้คือ "การใช้อันดับ (@Rank: = @Rank + 1) ในคิวรีที่ซับซ้อนกับเคียวรีย่อยจะใช้ได้หรือไม่ " เพราะฉันกำลังมองหาวิธีแก้ปัญหาโดยใช้อันดับ แต่ตอนนี้ฉันเห็นว่าวิธีแก้ปัญหาที่บิลโพสต์คือ ดีขึ้นมาก คำถามเดิม: ฉันกำลังพยายามเขียนข้อความค้นหาที่จะบันทึกครั้งสุดท้ายจากแต่ละกลุ่มตามลำดับที่กำหนดไว้: SET @Rank=0; select s.* from (select GroupId, max(Rank) AS MaxRank from (select GroupId, @Rank := @Rank + 1 AS Rank from Table order by OrderField ) as t group by GroupId) as t join ( …

7
ฉันจะเลือกแถวที่มีการประทับเวลาล่าสุดสำหรับค่าคีย์แต่ละค่าได้อย่างไร
ฉันมีตารางข้อมูลเซ็นเซอร์ แต่ละแถวจะมีรหัสเซ็นเซอร์การประทับเวลาและช่องอื่น ๆ ฉันต้องการเลือกแถวเดียวที่มีการประทับเวลาล่าสุดสำหรับแต่ละเซ็นเซอร์รวมถึงฟิลด์อื่น ๆ ด้วย ฉันคิดว่าวิธีแก้ปัญหาคือการจัดกลุ่มตามรหัสเซ็นเซอร์แล้วเรียงลำดับตาม max (การประทับเวลา) ดังนี้: SELECT sensorID,timestamp,sensorField1,sensorField2 FROM sensorTable GROUP BY sensorID ORDER BY max(timestamp); สิ่งนี้ทำให้ฉันมีข้อผิดพลาดที่บอกว่า "sensorField1 ต้องปรากฏในกลุ่มตามอนุประโยคหรือใช้ในการรวม" วิธีที่ถูกต้องในการแก้ไขปัญหานี้คืออะไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.