이것은 공식화하는 데 어려운 질문입니다. (모든 편집은 인정됩니다) 그러나 여기에 있습니다. 두 테이블 (FRUIT
및 BASKET
)이 있다고 가정 해 보겠습니다. 과일 (과일류가 아닌 실제 아이템을 나타냄)은 바구니로 그룹화됩니다.레코드의 속성이 GROUP BY 문의 무언가의 MAX입니까?
FRUIT_ID WEIGHT_IN_GRAMS BASKET_ID FRUIT_TYPE
-------- --------------- --------- ----------
1 100 1 Apple
2 200 1 Orange
3 150 1 Lemon
4 100 2 Apple
5 300 2 Plum
내가 원하는 것은 각 바구니에서 무거운 과일의 FRUIT_ID
입니다 : 여기에 FRUIT
의 한 예입니다. 즉 : 그 WEIGHT_IN_GRAMS
제외
select fruit_id, basket_id, fruit_type
from fruit f
join (select basket_id, max(weight_in_grams) max_weight
from fruit
group by basket_id) t on f.basket_id = t.basket_id
and f.weight_in_grams = t.max_weight;
이 일할 수있는이 고유 보장되지 않습니다 : 여기에
FRUIT_ID BASKET_ID FRUIT_TYPE
-------- --------- ----------
2 1 Orange
5 2 Plum
내가이를 찾기 위해 마련 한 SQL이다. 중복이있는 경우, 나는 알파벳 순서대로 마지막 것을 원할 것입니다.
수취인?
PS : 위의 쿼리를 위의 다른 쿼리로 래핑 할 수 있다는 것을 알고 있습니다. 그러나 이것은 다소 지저분 해 보입니다. 가능한 경우 가능한 한이를 최적화하는 것이 좋습니다.
귀하의 농구 테이블이이 모든 것에 어떻게 들어 맞는지는 실제로 볼 수 없습니다. FRUIT에 FRUIT에 가입하는 것 같습니다. 각 테이블의 정확한 정의를 게시 할 수 있습니까? – DCookie
바스켓 테이블은 실제로 과일을 임의로 그룹화 한 것입니다. 이것은 내가 가진 실제 문제에 대한 비유이며,이 문제는이 문제를 더욱 이해하기 어렵게 만듭니다. – daveslab