SQL选择计数2列和反转值

时间:2014-10-25 12:48:29

标签: sql select count

我有这个查询来列出和计算不同的分辨率:

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

现在我喜欢将(w,h)==(h,w)的值分组,例如在800 x 1200的同一行中计算1200 x 800。

单个SQL语句会很好。

1 个答案:

答案 0 :(得分: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);

请注意,使用distinct时几乎不需要group by

此外,某些数据库具有可以简化代码的least()greatest()函数,但您没有指定要使用的数据库。以上是ANSI标准SQL。