ví dụ: chúng ta có:
element | group_value | value
a | 1 | 2000
a | 2 | 1500
a | 2 | 2500
b | 1 | 1000
Tôi chỉ muốn trả lại 3 bản ghi cuối cùng vì đó là những bản ghi có giá trị nhóm tối đa cho mỗi phần tử.
Tôi biết một giải pháp với truy vấn con nhưng có một giải pháp hiệu quả không?
Để làm rõ: đối với phần tử 'a':
2 là nhóm_value cao nhất vì vậy nó trả về hàng 2 và 3> (và không phải hàng đầu tiên vì giá trị nhóm của nó không cao nhất),
cho phần tử 'b':
1 là> nhóm_value cao nhất để nó trả về hàng 4
Giải pháp (hiệu suất không tốt) của tôi cho vấn đề là:
select *
from x x1
where (element, group_value) in (select element, max(group_value)
from x x2
where x1.element = x2.element
group by x2.element)