SQL选择计数2列和反转值

SQL选择计数2列和反转值,sql,select,count,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语句就好了。尝试这样做: select (case when w < h then w else h end) as v1, (case when w < h t

我使用此查询列出并计算不同的分辨率:

SELECT DISTINCT w, h, count(*) as c from resolution GROUP BY w, h
现在,我希望在对(w,h)=(h,w)的值进行分组时使用相同的方法,例如在800 x 1200的同一行中计算1200 x 800

一条SQL语句就好了。

尝试这样做:

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);
选择(w
请注意,在使用
分组依据
时,几乎不需要
区分


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

太棒了!它工作得很好。不知道这些条件和“结束”代码。非常感谢。我使用的是MySql,所以这将相当于从解析组中选择最大值(w,h),最小值(w,h),计数(*)作为c,再次感谢您的指导@S.E。如果
w
h
都不是
NULL
,则这些值是等效的。