2014-10-25 2 views
0

내가 나열하고 서로 다른 해상도 계산이 쿼리가 : 어디에 (H, W)의 값을 그룹화하면서 지금은 같은 싶습니다SQL 선택 카운트 2 열 및 반전 값

SELECT DISTINCT w, h, count(*) as c from resolution GROUP BY w, h 

을 == (H , w), 예를 들어 800 x 1200과 같은 줄에서 1200 x 800을 계산합니다.

단일 SQL 문이 좋을 것입니다. 이 일을

답변

0

시도 :

select (case when w < h then w else h end) as v1, 
     (case when w < h then h else w end) as v2, 
     count(*) as c 
from resolution r 
group by (case when w < h then w else h end), 
     (case when w < h then h else w end); 

group by를 사용할 때 거의 distinct을 필요가 없습니다.

또한 일부 데이터베이스는 코드를 단순화 할 수있는 least()greatest() 기능이 있지만 사용중인 데이터베이스는 지정하지 않았습니다. 위의 것은 ANSI 표준 SQL입니다.

+0

좋아요! 그것은 완벽하게 작동합니다. 이러한 조건과 "종료"코드에 대해 알지 못했습니다. 매우 감사합니다. –

+0

나는 MySql을 사용하고 있기 때문에 이것은 SELECT GREATEST (w, h), LEAST (w, h), count (*)와 같은 결과를 얻을 수있다. GROUP BY w, h –

+0

@ S.E. . . . 'w'도'h'도'NULL'이 아니면 동등합니다. –