SQL标准中最好的和最少的

Wal*_*J89 6 sql standards

我的理解是GREATEST()和LEAST()不是SQL标准的一部分,但是很常见.

我想知道,有没有办法克隆GREATEST的功能保持在SQL标准内?

SELECT id, GREATEST(1,2,3,4,5,6,7) AS number FROM table
Run Code Online (Sandbox Code Playgroud)

完全查询:

  SELECT SUBSTR(section,1,2) AS campus, 
           AVG(GREATEST(maximum - enrolled, 0)) AS empty 
    FROM sectionrun 
   WHERE coursenumber = '105' AND subject = 'ENGL' 
GROUP BY campus
Run Code Online (Sandbox Code Playgroud)

小智 5

GREATEST(1,2,3,4,5,6,7) AS number
Run Code Online (Sandbox Code Playgroud)

可以变成

(select max(tmp) from (
        select 1 tmp from dual
        union all
        select 2 tmp from dual
        union all
        select 3 tmp from dual
        union all
        select 4 tmp from dual
        union all
        select 5 tmp from dual
        union all
        select 6 tmp from dual
        union all
        select 7 tmp from dual
) ) AS number          
Run Code Online (Sandbox Code Playgroud)


Ail*_*lyn 4

您可以使用以下CASE表达式:

  SELECT SUBSTR(section,1,2) AS campus, 
           AVG(CASE WHEN maximum - enrolled > 0 
                    THEN maximum - enrolled
                    ELSE 0
               END) AS empty 
    FROM sectionrun 
   WHERE coursenumber = '105' AND subject = 'ENGL' 
GROUP BY campus
Run Code Online (Sandbox Code Playgroud)

  • 这不能很好地扩展到两个以上的值。对于OP特定的例子来说这很好,但不能回答更普遍的问题。 (4认同)