SQL计算两个字段或者三个字段的最大值:
方法一:
MAX是一个对单列数据进行操作,选择最大值,但是对于要选择同一行中两行值中较大一列,这样在sql中是没法使用的
但利用以下公式可以达到相应的目的,
max(x,y)=(x+y+ABS(x-y))/2
ABS(x-y)是拿到x-y的差的绝对值,同样也可以得到如下公式:
min(x,y)=(x+y-ABS(x-y))/2
方法二:
考虑使用导出表,将三列数据合并到一列中来,然后再在外层Select中查出最大值,如以下脚本:
Sql代码 收藏代码
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;
PS:这两种方法适用于 ID没有重复的情况下
方法三:用case when 添加一列,取出a和b中较大的一个命名为max,max再和c比较取出较大的那个
SELECT (CASE WHEN er <= c) THEN c ELSE er END )max
FROM( SELECT (CASE WHEN a <= b) THEN b ELSE a END )er FROM xyz)
相关文章
- SQL计算两个字段或者三个字段的最大值
- SQL SERVER 比较两个数据库中表和字段的差异
- SQL 分组后获取其中一个字段最大值的整条记录 【转载】 - 禅道
- 如何用sql 查找两个字段重复的记录,并列出重复记录 - ykhi
- 如何比较两个SQL数据库的字段差别。
- sql 字段先计算后再拿比对的字段进行比对 效率提升100倍
- SQL中如何把一个字段的值拆分成另外两个字段的值?
- 使用SQL修改一个表中两个字段的值?求救
- SQL查询某一字段(int)最大值前十条记录后如何赋给PHP的变量???
- 在access数据库中,如何使用sql语句进行时间字段的计算,例如:select * from table where date_