세 개의 필드, 고유 한 사용자 ID 및 두 개의 고유하지 않은 특성 (예 : 연령, 성별 등)이있는 테이블을 상상해보십시오. user / traitA / traitB
이 표에서는 단일 쿼리에서 각 특성에 대해 가장 빈번한 값을 가져오고 싶습니다. 우리의 특성이 학년 / 전공이면 결과는 주니어 / 생물학이 될 수 있습니다. 이것은 생물학의 주니어가 가장 일반적인 조합이라는 의미가 아니라 각 값 자체가 특성에서 가장 일반적이라는 것을 의미합니다.
이것은 두 개의 개별 쿼리를 실행하여 단일 필드로 그룹화하고 순위를 매기고 콤보를 넣는 것이 가능합니다. 그러나 내 특정 문제에는 더 많은 필드가 있으며 후속 쿼리를 수행하는 데 비용이 많이 듭니다.
가장 일반적인 특성 선택 :
SELECT age FROM table_name GROUP BY 연령 ORDER BY COUNT (*) DESC LIMIT 1
여러 열에서 가장 일반적인 값을 선택하기 위해이 쿼리는 Postgre에서 작동했습니다.
SELECT DISTINCT
FIRST_VALUE(age) OVER (ORDER BY count1 DESC) AS top1,
FIRST_VALUE(sex) OVER (ORDER BY count2 DESC) AS top2
FROM (
SELECT age,
sex,
COUNT(age) OVER (PARTITION BY age) AS count1,
COUNT(sex) OVER (PARTITION BY sex) AS count2
FROM some_table
) some_table
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다