`
qiang106
  • 浏览: 387660 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL计算两个字段或者三个字段的最大值

阅读更多
    MAX是一个对单列数据进行操作,选择最大值,但是对于要选择同一行中两行值中较大一列,这样在sql中是没法使用的,考虑如下数据,要得到x,y中较大的一个


SQL中的MAX是不能直接使用的,但利用以下公式可以达到相应的目的,
max(x,y)=(x+y+ABS(x-y))/2
ABS(x-y)是拿到x-y的差的绝对值,同样也可以得到如下公式:
min(x,y)=(x+y-ABS(x-y))/2

因此可以得到相应的sql如下:
  select id,x,y,(x+y+abs(x-y))/2 from xy;

如果是要选择三个列中的最大值的话可以用max(x,max(y,z)),不过这样写出来的sql可是一大堆了:



考虑使用导出表,将三列数据合并到一列中来,然后再在外层Select中查出最大值,如以下脚本:
select id,MAX(m) from (
	select id,`x` as m from xyz 
		union all 
	select id,`y` as m from xyz 
		union all 
	select id,`z` as m from xyz
) u group by id;
















  • 大小: 4.7 KB
  • 大小: 5.7 KB
分享到:
评论

相关推荐

    sqlserver字段最大值加1后补0

    sqlserver字段最大值加1后补0

    SQL排除重复结果只取字段最大值分享

    如何用SQL排除重复结果只取字段最大值的记录?要求得到的结果(即是PID相同的记录只取ID值最大的那一条)。 代码如下:select * from [Sheet1$] awhere ID not exists (select 1 from [Sheet1$] where PID=a.PID and...

    sql_按照某一个字段进行去重后获取全部字段

    在实际工作中,我们经常会遇到需要对数据表中的记录进行去重的情况,尤其是当某个字段作为唯一标识符时,我们希望能够基于这个字段获取最新的、唯一的或者汇总的数据记录。下面将详细阐述这一知识点。 ### SQL 去重...

    SQL Server中实现字段值自动增长且连续

    然而,`identity`属性存在两个主要的限制。首先,它仅支持整型数据类型,这意味着它无法处理诸如`A0001`到`A0020`或`00001`到`00020`这样的文本或带有前导零的数字序列。其次,如果表中删除了记录,再插入新记录时,...

    对某一字段分组后,取出另一字段最大值的所有记录

    表:t_test -------------------------------------- id(int) cost(int) des Autoid(id) -------------------------------------- 1 10 aaaa 1 1 15 bbbb 2 1 20 cccc 3 ...取每一类id中cost最大的纪录

    SQLServer常用字段类型

    ### SQL Server 常用字段类型详解 在数据库设计与管理中,选择合适的字段类型对于数据的存储效率、查询性能以及数据完整性至关重要。SQL Server 提供了丰富的数据类型,覆盖了从基本数值到复杂文本、图像等各类数据...

    insert和select结合实现”插入某字段在数据库中的最大值+1″的方法

    本文是mysql 数据库 问题一 将表一的数据导入表二...在表中插入数据时,某一字段取数据库中该字段的最大值,并+1,这个问题很多人都说用存储过程什么的解决,其实使用insert 和 select 结合就可以很好的解决这个问题啊

    按某一字段分组取最大(小)值所在行的数据

    按某一字段分组取最大(小)值所在行的数据

    sql2005自增字段归零.docx

    需要注意的是,如果你试图将`new_reseed_value`设置为小于表中现有最大值的值,SQL Server将抛出错误2627,因为它违反了唯一性约束。因此,确保新种子值大于或等于当前的最大标识值。 此外,自增字段的管理对于...

    SQL查询动态字段

    首先创建了一个名为`tb`的表,其中包含了三个字段:一个`varchar(10)`类型的字段(用于存储字符),一个同样为`varchar(10)`类型的字段(用于存储标记或类别),以及一个`int`类型的字段(用于存储数字)。...

    SQL Server中实现字段值自动增长且连续.pdf

    然而,使用identity属性也有两个主要缺陷:一是字段必须为整型类型,限制了字段值只能是数字,无法实现如“A0001”或“00001”这样的文本格式增长;二是删除表中的记录后,自动增长列的值会出现不连续的现象,因为...

    如何查出同一张表中字段值重复的记录

    这条 SQL 语句将会返回 `student` 表中每个 `num` 值对应的记录数量,如果数量大于 1,则表示该 `num` 值重复。 #### 2.2 删除重复记录 要删除这些重复记录,可以使用以下 SQL 语句: ```sql DELETE FROM student ...

    Oracle查询指定表的所有字段名和数据类型SQL

    这里通过比较两个表中的`TABLE_NAME`和`COLUMN_NAME`字段来关联两个表,并且只针对名为`TBSTATTYPE`的表进行查询。 #### 解读各字段含义 - **COLUMN_NAME**:表示列的名称。 - **DATA_TYPE**:表示该列的数据类型...

    SQL SERVER字段类型说明

    - **存储**:占用的字节数等于定义的最大长度的两倍(每个字符占用两个字节)。 5. **Nvarchar**: Unicode 变长字符串,最大长度为 4000 字符。 - **用途**:适用于长度可变的 Unicode 字符串存储。 - **存储**...

    sql server 中合并某个字段值的实例

    首先,创建一个名为`body`的表,包含两个字段:`ID`(整型)和`BODY`(变长字符型,最大长度为20)。以下是创建表和插入数据的代码: ```sql CREATE TABLE body ( ID int, BODY nvarchar(20) ); GO INSERT INTO...

    SQL SERVER的字段类型说明

    在SQL Server中,字段类型(或数据类型)是定义数据库中每列数据特性的关键元素。这些类型决定了数据可以存储的格式、范围以及占用的空间。以下是SQL Server支持的主要字段类型,以及它们各自的描述: 1. **bit**: ...

    sql获得自动增加字段的下一个编号,不是max(id)+1

    结合这两个函数,可以轻松地计算出下一个自动增长值: ```sql SELECT IDENT_CURRENT('TableXXX') + IDENT_INCR('TableXXX') AS NextID; ``` 这里,`IDENT_CURRENT('TableXXX')`返回`TableXXX`表中的当前自动增长值...

    SQL Server 中调整自增字段的当前初始值

    SQL Server 中调整自增字段的当前初始值 SQL Server 中调整自增字段的当前初始值是指在 SQL Server 中对自增字段的当前初始值进行调整,以解决自增字段的当前初始值与数据库维护的初始自增值不一致的问题。 在 SQL...

    C#读写SQL数据库Image字段

    // 注意:这里应该是arraySize + 1,因为GetUpperBound返回的是索引的最大值 } } ``` #### 3. 处理Image字段的其他技巧 除了上述基本的读写操作之外,在实际应用中还可能需要处理更多复杂的场景,例如将`Image`...

    SQL查询二进制内容

    第一次转换是将`TOOLLIST`字段(假设其数据类型为其他类型)转换为`varbinary(8000)`,这意味着它会被视为一个最大长度为8000字节的二进制数据。第二次转换则是将得到的二进制数据再次转换为`varchar(8000)`类型,即...

Global site tag (gtag.js) - Google Analytics