[SQL] SQL : 여러 열을 GROUP BY 및 MAX를 사용하여
SQLSQL : 여러 열을 GROUP BY 및 MAX를 사용하여
나는 SQL 쿼리에 문제가 있습니다. 이 예제 데이터를 가지고 가게
itemID catID attrib1 attrib2
1 1 10 5
2 1 10 7
3 1 5 10
4 2 18 15
나는 (attrib2 이상 attrib1 가진 우선 순위) 각 카테고리에 가장 적합한 항목을 반환 할
물론, SELECT CATID, MAX (attrib1)는, MAX CATID BY test_table 그룹 (attrib2는) 작업은 1 고양이 10 및 10을 반환하지 않기 때문에.
그래서 attrib2 행에서 최대 값을 선택하지만 attrib1도 최대 값 것들을 고려하는 MySQL의에게 어쨌든 무엇입니까? 즉 다음과 같은 데이터를 반환
catID attrib1 attrib2
1 10 7
2 18 15
해결법
-
==============================
1.당신은 최고의 attrib1 값을 얻을, 다음 attrib2 값에 가입하고 각 attrib1 값에 대한 사람들의 최선을 얻을 수 있습니다 :
당신은 최고의 attrib1 값을 얻을, 다음 attrib2 값에 가입하고 각 attrib1 값에 대한 사람들의 최선을 얻을 수 있습니다 :
select t2.catID, t2.attrib1, max(t2.attrib2) from ( select catID, max(attrib1) as attrib1 from test_table group by catID ) t1 inner join test_table t2 on t2.catID = t1.catID and t2.attrib1 = t1.attrib1 group by t2.catID, t2.attrib1
-
==============================
2.사용하다:
사용하다:
SELECT x.catid, x.max_attrib1 AS attrib1, (SELECT MAX(attrib2) FROM YOUR_TABLE y WHERE y.catid = x.catid AND y.attrib1 = x.max_attrib1) AS attrib2 FROM (SELECT t.catid, MAX(t.attrib1) AS max_attrib1 FROM YOUR_TABLE t GROUP BY t.catid) x
-
==============================
3.
SELECT tt.catId, tt.attrib1, MAX(tt.attrib2) FROM test_table tt GROUP BY tt.catID, tt.attrib1 WHERE tt.attrib1 = (SELECT MAX(t2.attrib1) FROM test_table t2 WHERE t2.catID = tt.catID)
-
==============================
4.
SELECT catID, max1, max2 FROM ((SELECT Max(attrib1) as max1, catID GROUP BY attrib1) as t1 INNER JOIN (SELECT MAX(attrib2) as max2, catID GROUP BY attrib2) as t2 ON t1.catID = t2.catID) as t3
from https://stackoverflow.com/questions/4045609/sql-using-group-by-and-max-on-multiple-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 모든 열이 NULL이 있는지 확인하는 빠른 방법이 있나요? (0) | 2020.07.13 |
---|---|
[SQL] PostgreSQL은 여러 선택 문을 결합 (0) | 2020.07.13 |
[SQL] PostgreSQL을에 선택 MySQL의 변환 (0) | 2020.07.13 |
[SQL] SQLSTATE는 [23000] : 무결성 제약 조건 위반 : 1452 추가 또는 자식 행을 업데이트 할 수 없습니다가 : 외래 키 제약 조건이 실패 (0) | 2020.07.13 |
[SQL] 어떻게 예약 된 SQL을 키워드로 명명 된 테이블 열을 처리하기 위해? (0) | 2020.07.13 |