SQL에서 같은 그룹의 최대/최소 레코드 읽어들이기
하고 싶은 일
같은 카테고리에서 가장 높은 상품을 하나씩 얻고 싶은 녀석.
다음 예에서 ★의 기록을 추출하고 싶습니다.
1. 표를 만들어 데이터에 넣기
create table items (
id int not null primary key,
name varchar(100),
price int,
category varchar(100)
);
insert into items values(1, 'りんご', 190, 'くだもの');
insert into items values(2, 'みかん', 100, 'くだもの');
insert into items values(3, 'きゅうり', 80, '野菜');
insert into items values(4, '人参', 110, '野菜');
insert into items values(5, 'キャベツ', 110, '野菜');
insert into items values(6, '豚肉', 300, '肉');
insert into items values(7, '牛肉', 400, '肉');
2. 품목별 최고 가격 추출
select category, max(price) as price from items group by category;
결과3. 그리고 이 종류, 가격 중 가장 작은 id를 얻는다.
하위 질의를 사용합니다.
select
category, price, min(id) as id
from
items
where
(category, price)
in
(
select
category
,max(price) as price
from
items
group by
category
)
group by
category, price
;
결과4. 그리고 이 id로 items를 추출합니다.
이 밖에 하위 조회.무거워 보여요.
select
*
from
items
where
id in (
select
min(id) as id
from
items
where
(category, price)
in
(
select
category ,max(price) as price
from
items
group by category
)
group by category, price
)
;
결과끝.
더 쉬운 방법은 없나?
Reference
이 문제에 관하여(SQL에서 같은 그룹의 최대/최소 레코드 읽어들이기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/inouet/items/4f1d7f299725597d8407텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)