SQL查询最接近某一值的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL查询最接近某一值的数据相关的知识,希望对你有一定的参考价值。

数据库中有多条数据,有一列数据时数值的,如2,6,9,12,15,16,查询最接近10的数值,既9,查询语句该怎么写?

接近某一值必须要用绝对值函数【abs】,例如数:【1,2,3,4,5,6,7】,最接近6的肯定是5和7,最接近又要用到Top 1,这样获得最接近的一条记录

例如:

查询 表:【table_temp】中的数字列:【colNum】最接近10的数据

select top 1 * from table_temp order by abs(colNum-10)
参考技术A SELECT * FROM tablename 
WHERE ABS(column-10)=(SELECT MIN(ABS(column-10)) FROM tablename)

本回答被提问者采纳
参考技术B SELECT TOP 1
*
FROM

ORDER BY
ABS( 10 - 列 );
参考技术C select min(abs(a.col-10)) from table 参考技术D KEY_1 KEY_2 KEY_3 N1
20131008001 1 0 2
20131008001 2 0 6
20131008001 3 0 9
20131008001 4 0 12
20131008001 5 0 15
20131008001 6 0 16

SELECT a.*,abs(n1 - 10)
FROM (SELECT key_1,key_2,key_3, n1
FROM table_temp a
WHERE a.rekey_1 = '20131008001') a
WHERE abs(n1 - 10) = (SELECT MIN(abs(b.n1 - 10))
FROM table_temp b
WHERE b.key_1 = '20131008001' );

SQL如何查询出某一列中不同值出现的次数?

不同的值有很多,所以用case when不现实。

1、首先需要创建一个临时表,用于演示如何筛选出表中指定字段值重复的记录数量。

2、往临时表中插入几行测试数据,其中部分字段的Col2栏位值插入相同值,用于统计筛选相同Col2的行数。

3、查询临时表中的测试数据。

4、使用distinct可以筛选出Col2列的不同值的记录。

5、使用count(1)加上group by计算出Col2不重复值的记录行数。

6、使用having过滤出Col2列的行数大于1的值以及行数。

7、使用having过滤出Col2列的行数大于1的值以及行数,在按照行数倒序排列。

参考技术A

SQL查询出某一列中不同值出现次数的步骤如下:

我们需要准备的材料分别是:电脑、sql查询器。

1、首先,打开sql查询器,连接上相应的数据库表,例如test2表。

2、点击“查询”按钮,输入:select A, count(*) as num from test2 group by A;。

3、点击“运行”按钮,此时会将字段A的所有不同值出现的次数显示出。

参考技术B

我觉得好像不用楼上那么复杂吧?

select count(*) from (select distinct 列名 from 表名)

子查询中使用distinct查询出所有不同的值,然后用select count(*)查询子查询返回到行数。

追问

这句查到的是有多少不同的值,而不是每一个不同的值出现的次数。我的问题已经解决了,还是谢谢您的帮助

参考技术C select tb.newcolumn, count(ta.*) as cnt
from tableA ta
inner join (select distinct (thiscolumn) as newcolumn from tableA) tb
where ta.thiscolumn = tb.newcolumn
group by tb.newcolumn

实现了tableA 的 thiscolumn 的不同值的计数。主要的 inner join 自己group by 的值后的结果追问

报错了,不过还是谢谢你的帮助。

参考技术D SELECT 字段a,COUNT(DISTINCT(字段b)) FROM 表名 GROUP BY 字段a

以上是关于SQL查询最接近某一值的数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何查询出某一列中不同值出现的次数?

sql 查询某一字段值的个数

SQL语句如何查询ACCESS数据库中某一字符串字段长度等于某个值的所有记录?

SQL中如何统计查询结果中某一列重复值的个数?

SQL语句来判断数据库某一列下是不是有相同值的记录方法

SQL数据库中 如何让某一列的值自动累加1?