如何从数据库获取给定输入的最接近匹配值

用户名

我正在尝试建立一个SQL查询,该查询将获取给定值的最接近的匹配项,当用户输入8000时,我想获取一条最接近8000的记录,一条等于8000的记录以及一条等于8000的记录。级别高于8000。设计数据模型的最佳方法是什么,SQL可以执行此操作,我正在尝试通过单个查询将其最小化,以获取性能,请提出建议。

在下面的示例中考虑此示例,其中Employee是表名,名称是工资,工资是其属性

创建表employee(姓名,工资整数)

这是Employee表的样本数据

 Name  | salary
 ----------
 Raju         5000
 Ram          8000
 Sulthan      7000
 Aditya       10,000

正如我上面解释的,如果我输入薪水为8000,我想获取一条最接近8000的记录,一条等于8000的记录,以及一条高于8000的一级的记录。

a_horse_with_no_name

您可以使用窗口函数执行此操作:

select name, salary
from (
  select name, 
         salary,
         case 
            when salary = 8000 then 1 
            when lag(salary) over w = 8000 then 1
            when lead(salary) over w = 8000 then 1
            else 0 
         end as flag
  from employee 
  window w as (order by salary)
) t
where flag = 1;

另一种选择是使用三个查询,然后将它们与 UNION ALL

select name, salary
from employee 
where salary = 8000
union all
select *
from (
  -- get the highest salary that is lower then 8000
  select name, salary
  from employee 
  where salary < 8000
  order by salary desc
  limit 1
) t
union all
select *
from (
  -- get the smallest salary that is higher then 8000
  select name, salary
  from employee 
  where salary > 8000
  order by salary 
  limit 1
) t
order by salary;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从SQL数据库获取PHP中最接近的日期匹配

给定2个输入值时,如何使用php从数据库中获取表?

如何从数据库中选择最接近的GPS坐标?

如何使用FFmpeg获取给定时间戳之前最接近关键帧的时间戳?

获取所选行的最接近输入值

如何获取输入值并将其插入数据库

Sql获取给定树型数据库的一个国家的所有城市

尝试从WPF中的Access数据库获取给定条件的日期时出错

如何通过scala中的给定键从地图获取最接近的值?

将数据库值合并到最接近的整数值

从整数列表中,获取最接近给定值的数字

从整数列表中,获取最接近给定值的数字

如何显示给定输入数字的最接近div ID?

如何检查数据库数组是否匹配给定数组的任何值

如何从列表中获取最接近给定目标的向量

如何在单击按钮时获取最接近的隐藏输入字段的值

如何找到模数为零的给定值的最接近除数

查询以基于其他列获取最接近的匹配值

获取最接近输入的价值

最接近的匹配值 sqlite

使用最接近时,jQuery无法获取输入字段的值

按ID将数据匹配到最接近的时间值

如何从ADF复制数据活动中获取给定列的最大值

如何获取给定json的值并获取结果

如何获取匹配MySQL数据库多列值的值

如何将表单输入中的用户ID值与数据库中的记录进行匹配?

保存到sqlite数据库之前如何在Laravel Match中匹配输入值

如何获得 JQuery 最接近的输入 id 和数据属性?

从数据库获取给定月份和年份的所有日期的记录,如果数据库中不可用,则为空白