关于查询出表中最大值和最小值的问题

问题|最大值

曾经看到一个帖子,是问怎么一次(用一条查询语句)就查询出一个表中的最大值和最小值,其中一位这样回答的:(拿Northwind的Products表为例)
select top 1 * from products order by UnitPrice
union
select top 1 * from products order by UnitPrice desc
上面这个似乎正确,可是其实在使用了Union的时候只有最后一条Select命令才能使用Order by参数,因此上面这样是不行的,在查询分析器中运行会爆出错误

下面提供查询出最大值和最小值的方法:
declare @HighLow table
(
ProductName varchar(50)
)
insert @HighLow select top 1 Productname from Products order by Unitprice desc
insert @HighLow select top 1 Productname from Products order by Unitprice
select ProductName from @HighLow
这种方法不是一次就查询出最大值和最小值,而是使用了一个Table变量,将查询出的最大值和最小值保存入这个表中。

下面这个例子使用了Northwind数据库,取出每种书目中价格最贵的3本书:
declare @Category table
(
id int identity(1,1) not null,
CategoryId int,
CategoryName varchar(50)
)
declare @MostExpensive table
(
ProductName varchar(50)
)
declare @counter int,@number int
set @counter=0
insert @Category select CategoryId,CategoryName from Categories
select @number=count(*) from @Category
while @counter<@number
begin
set @counter=@counter+1
insert @MostExpensive select top 3 ProductName from products where categoryid=(select CategoryId from @Category where id=@counter) order by UnitPrice desc
end
select * from @MostExpensive

时间: 2024-12-22 16:02:07

关于查询出表中最大值和最小值的问题的相关文章

SQL Server数据库按百分比查询出表中的记录数_MsSql

SQL Server数据库查询时,能否按百分比查询出记录的条数呢?答案是肯定的.本文我们就介绍这一实现方法. 实现该功能的代码如下: create procedure pro_topPercent ( @ipercent [int] =0 --默认不返回 ) as begin select top (@ipercent ) percent * from books end 或 create procedure pro_topPercent ( @ipercent [int] =0 ) as be

SQL Server数据库按百分比查询出表中的记录数

SQL Server数据库查询时,能否按百分比查询出记录的条数呢?答案是肯定的.本文我们就介绍这一实现方法. 实现该功能的代码如下: create procedure pro_topPercent ( @ipercent [int] =0 --默认不返回 ) as begin select top (@ipercent ) percent * from books end 或 create procedure pro_topPercent ( @ipercent [int] =0 ) as be

在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题

原文:在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题 SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\KK.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 问题:消息 15281,级别 16,状态 1,第 1 行 SQL Server 阻止了对组件 'Ad Hoc Dis

JavaScript学习笔记之取数组中最大值和最小值_javascript技巧

推荐阅读:JavaScript学习笔记之数组的增.删.改.查 JavaScript学习笔记之数组求和方法 JavaScript学习笔记之数组随机排序 在实际业务中有的时候要取出数组中的最大值或最小值.但在数组中并没有提供arr.max()和arr.min()这样的方法.那么是不是可以通过别的方式实现类似这样的方法呢?那么今天我们就来整理取出数组中最大值和最小值的一些方法. 取数组中最大值 可以先把思路理一下: 将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值: 开始遍历数组,从第二个元

hibernate可不可以根据一个实体类查询出数据库中是否存在该记录

问题描述 hibernate可不可以根据一个实体类查询出数据库中是否存在该记录 需要判断一条记录是否已经在数据库中是否存在重复记录,用hql的话传入的参数会比较多

sql查询同一表中不同ID的值

问题描述 sql查询同一表中不同ID的值 查询name为'xiaofengceshi'的不同aucid的最大now_price值(结果为两条,aucid为1和3) 解决方案 select max(now_price) from test_tb where name='xiaofengceshi' group by aucid

sql-如何用SQL语句查询Table表中的ID1中的O1,O2,O3为1 的数目

问题描述 如何用SQL语句查询Table表中的ID1中的O1,O2,O3为1 的数目 如何用SQL语句查询Table表中的ID1中的O1,O2,O3为1 的数目 Table ID O1 O2 O3 ID1 1 1 0 ID2 1 0 1 ID3 0 1 1 解决方案 select COUNT(*), (select COUNT(*) FROM a where O1='1') AS COUNTO1,(SELECT COUNT(*) FROM A WHERE O2="1") AS COUN

方法-用SQL语句查询User表中newsh属性为“政治类新闻”和“娱乐类新闻”的人数放入MAP中

问题描述 用SQL语句查询User表中newsh属性为"政治类新闻"和"娱乐类新闻"的人数放入MAP中 用SQL语句查询User表中newsh属性为"政治类新闻"和"娱乐类新闻"的人数放入MAP中问题一:整个方法该如何实现问题二:SQL语句怎么写 参考用例 类似这样的方法 新手不知道该怎么改动成自己需要的方法求助各位大神 public Map<String Long> totalInventory(int year

Oracle查询一个表中的几万条数据,不用or,优化的方法还有什么呢

问题描述 Oracle查询一个表中的几万条数据,不用or,优化的方法还有什么呢 如:name numbers a 22 b 33 c 44 d 55 . . . 查询a.b.d的详细信息,不用or in之类的 解决方案 用 EXISTS ........