假设我有一个名为ABC的表:
Col Val
a 1
b 3
c 2
a 3
b 6
c 7
a 5
b 9
c 9
a 7
b 2
c 8
SELECT MAX(CASE
WHEN COL = 'a'
THEN VAL
(exit_command_if_there_s_any)
WHEN COL = 'b'
THEN VAL*3
ELSE
VAL*4
END) AS "MAX_VAL"
FROM ABC;
基本上我想要的是这个查询返回COL =' a'的最大值。如果它存在于表中,则应该返回其他COL的最大值。 但如果COL =' a'在那里,它不应检查COL中的其他值,只需退出CASE。
答案 0 :(得分:1)
这正是你所要求的 -
单个最大值,优先于a
,b
,然后是其他值,乘以相应的值(无/ 3/4)。
select coalesce
(
max(case when COL = 'a' then val end)
,max(case when COL = 'b' then val end) * 3
,max(val) * 4
) as "MAX_VAL"
from ABC
+---------+
| MAX_VAL |
+---------+
| 7 |
+---------+
答案 1 :(得分:0)
如果您想获得最大值,请不要认为char* sizeToStr(ssize_t size){
char* s = NULL;
if(size<=1023){
sprintf(s,"%.1dB",(1.0*size));
return s;
}
if(size<=1048575){
sprintf(s,"%.1dK",(1.0*size)/1024);
return s;
}
if(size<=1073741823){
sprintf(s,"%.1dM",(1.0*size)/(1024*1024));
return s;
}
sprintf(s,"%.1dG",(1.0*size)/(1024*1024*1024));
return s;
。代替:
ssize_t
或者,将两个值放在同一列中:
case