가장 자주 나타나는 값을 선택하는 방법은 무엇입니까?
쿼리가 카운트별로 정렬되어 맨 위 행을 차지하는 예를 본 적이 있지만, 이 경우 여러 개의 "가장 빈도가 높은" 값이 있을 수 있으므로 단일 결과 이상의 값을 반환해야 할 수 있습니다.
이 경우 사용자 테이블에서 가장 자주 나타나는 성을 찾고자 합니다. 지금까지 확인한 내용은 다음과 같습니다.
select last_name from users group by last_name having max(count(*));
안타깝게도 이 쿼리에서 최대 함수가 너무 깊게 중첩되어 있다는 오류가 발생합니다.
select
x.last_name,
x.name_count
from
(select
u.last_name,
count(*) as name_count,
rank() over (order by count(*) desc) as rank
from
users u
group by
u.last_name) x
where
x.rank = 1
해석 함수 사용rank
다음 순서에 따라 번호를 할당합니다.count(*) desc
두 이름의 개수가 동일하면 같은 순위가 되고 다음 숫자는 건너뜁니다. 따라서 순위가 1, 1 및 3인 행을 얻을 수 있습니다.dense_rank
두 행의 순위가 동일한 경우(따라서 1, 1, 2) 다음 숫자를 건너뛰지 않는 대안이지만, 순위가 1인 행만 원하는 경우에는 큰 차이가 없습니다.
행을 하나만 사용하려면 각 행에 다른 번호를 지정해야 합니다.이 경우, 사용row_number
이 작지만 중요한 차이를 제외하고, 이러한 기능은 유사하며 동일한 방식으로 사용될 수 있습니다.
select name
from
(select name, count(1)
from table
group by name
order by count(1) desc) a
where rownum = 1
언급URL : https://stackoverflow.com/questions/7705929/how-to-select-the-most-frequently-appearing-values
'programing' 카테고리의 다른 글
Android: 선형 레이아웃에 테두리를 그리는 방법 (0) | 2023.07.31 |
---|---|
팬더 콘캣: 가치 오류:전달된 값의 모양은 blah이고 인덱스는 blah2를 의미합니다. (0) | 2023.07.31 |
구성 파일을 통해 WCF 웹 서비스 참조 URL 경로를 동적으로 전환합니다. (0) | 2023.07.31 |
HTML에서 한 이미지를 다른 이미지 위에 어떻게 배치합니까? (0) | 2023.07.31 |
테스트 중에 Spring Boot에서 /tmp/spring.log 파일을 사용 (0) | 2023.07.31 |