已知表TB的数据如下
SQL> select * from tb;
ID CHINESE MATH ENGLISH
---------- ---------- ---------- ----------
1001 89 98 87
1002 81 87 79
现在要得到如下的结果,该怎么来解决
ID CHINESE MATH ENGLISH MAX MIN
---------- ---------- ---------- ---------- ---------- ----------
1001 89 98 87 98 87
1002 81 87 79 87 79
想了半天也没想到啥好办法,首先自然而然想到用MAX和MIN函数,但是显然这两个是聚集函数,是要作用在同一个column的一个Group上面的,而现在要得到的MAX和MIN的值却是作用于每一行上面的,如果要借助于MAX()和 MIN()的话,还需要对原表的数据结构进行下处理(先进行转列操作 unpivot),但是显然不是很好。
解决方式如下
SQL> SELECT id, chinese, math, english,
2 greatest(chinese, math, english) max,
3 least(chinese, math, english) min
4 FROM tb;
ID CHINESE MATH ENGLISH MAX MIN
---------- ---------- ---------- ---------- ---------- ----------
1001 89 98 87 98 87
1002 81 87 79 87 79
另外个例子:
比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
取最大值
select greatest('3', '5') from dual
http://westlife063.blog.163.com/blog/static/129942096201032751442591/
分享到:
相关推荐
Oracle数据库中的`GREATEST`和`LEAST`函数是两个非常实用的工具,它们能够帮助我们快速地在多个表达式或列之间找到最大值或最小值。这两个函数在处理多列数据比较时,提供了简洁的解决方案,尤其在不需要进行复杂的...
7. LEAST函数:返回参数列表中的最小值。 8. NVL函数:用于将NULL值转换为指定的值。 9. UID函数:返回Oracle数据库的内部唯一标识。 10. USER函数:返回当前用户的名字。 11. USERENV函数:返回当前用户环境的信息...
本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的一些常用函数,这些函数涵盖了数学运算、数值处理、字符串操作等多个方面,对于数据库开发者和管理员而言,掌握这些函数的使用方法是提升工作效率的...
19. **最大值** - Oracle使用`GREATEST`函数,SQL Server使用`MAX`函数,但后者通常用于聚合查询。 - 示例:Oracle中`SELECT GREATEST(1, -2, 4, 3) FROM DUAL`;SQL Server中`SELECT MAX(value) FROM (VALUES (1)...
- GREATEST/LEAST:返回一组值中的最大值/最小值。 6. **聚合函数**: - COUNT:计算行数。 - SUM:计算数值列的总和。 - AVG:计算平均值。 - MAX/MIN:找到数值列的最大值/最小值。 7. **转换函数**: - ...
5. GREATEST函数:返回一组表达式中的最大值。 6. LEAST函数:返回一组表达式中的最小值。 以上总结的函数可以根据实际开发需求,灵活运用在SQL查询、存储过程、触发器等Oracle数据库对象中,用以处理数据和控制...
- GREATEST和LEAST找出两个或更多值中的最大值或最小值。 4. **聚合函数与分析函数**: - 分组函数如COUNT、SUM、AVG、MAX、MIN在GROUP BY子句中使用,对分组数据进行计算。 - 分析函数如ROW_NUMBER、RANK、...
这两个函数分别返回一组数中的最大值和最小值。例如,`GREATEST(1, 2, 3)` 返回 `3`,`LEAST(1, 2, 3)` 返回 `1`。 12. **TRIM() 函数** 虽然主要用在字符串处理上,但TRIM()也可用于数字,去除数字前后的空格,...
- **SQL Server**与**Oracle**: 分别使用`MAX()`和`MIN()`函数,但在Oracle中可以使用`GREATEST()`和`LEAST()`函数来同时比较多个值。 16. **处理NULL值** - **SQL Server**: 使用`ISNULL()`函数。 - **Oracle**...
- `GREATEST/LEAST`:返回一组值中的最大值或最小值。 6. **聚合函数**: - `COUNT`:计算行数。 - `SUM`:计算数值列的总和。 - `AVG`:计算平均值。 - `MAX/MIN`:找到列的最大值或最小值。 - `GROUP_BY`:...
- **最大/最小字符串**: Oracle中的`GREATEST`和`LEAST`函数用于找出一组字符串中的最大值和最小值,而SQL Server中没有直接对应的函数。 #### 日期函数 日期函数对于处理时间和日期非常重要。下面是一些Oracle和...
14. 最大值和最小值:SQL Server的`MAX()`和`MIN()`函数用于集合的最大值和最小值计算,Oracle提供了`GREATEST()`和`LEAST()`函数,能处理多个数值的比较。 15. 处理NULL值:SQL Server使用`ISNULL()`函数替换NULL...
4. GREATEST()和LEAST():找出多个值中的最大值和最小值。 以上只是Oracle函数大全中的一部分,实际中还有更多复杂的函数,如正则表达式函数REGEXP_LIKE,聚合函数如GROUP BY和HAVING,以及用于复杂查询的连接...
最后,除了以上这些,Oracle还提供了一些**其他特殊函数**,比如`ROWNUM`生成行号,`GREATEST()`和`LEAST()`返回两个或更多值中的最大值或最小值,`DBMS_OUTPUT.PUT_LINE()`用于在PL/SQL程序中打印输出,以及`USER`...
- **greatest/least**: 返回给定表达式列表中的最大值和最小值。 - **nvl/nvl2**: 在参数为null时提供替代值。 - **user/uid/userenv**: 返回用户或环境信息。 - **decode**: 等价于IF-THEN-ELSE语句。 - **nullif**...
- **最大值**:SQL Server 用 `MAX()` 对集合求最大值,Oracle 可以使用 `GREATEST()` 函数。 - **最小值**:SQL Server 用 `MIN()`,Oracle 使用 `LEAST()`。 - **处理 NULL 值**:SQL Server 有 `ISNULL()`,如...
- `GREATEST(value1, value2, ..., value_n)` 和 `LEAST(value1, value2, ..., value_n)`:返回一组值中的最大值或最小值。 这些函数在实际开发中扮演着至关重要的角色,无论是数据的查询、计算还是转换,都能看到...
- **求集合最大值**:SQLServer使用`MAX`,Oracle使用`GREATEST`。 - **求集合最小值**:SQLServer使用`MIN`,Oracle使用`LEAST`。 #### 处理NULL值 在SQLServer中,可以使用`ISNULL`函数将NULL值替换为指定值;...
18. **最大值函数** - Oracle: 使用`MAX`函数。 - SQL Server: 使用`GREATEST`函数,但需要从特定表中选取值。 - 示例:`SELECT MAX(value) FROM <table>`(Oracle)/ `SELECT GREATEST(1, -2, 4, 3) FROM DUAL`...