sql 取最大與最小值語句
sql 取最大與最小值語句
if object_id('tb') is not null drop table tb;
go
create table tb(
col1 int,
col2 int,
fcount int)
insert into tb
select 11,20,1 union all
select 11,22,1 union all
select 11,23,2 union all
select 11,24,5 union all
select 12,39,1 union all
select 12,40,3 union all
select 12,38,4
go
--查詢
--1
select * from tb t where fcount=(select max(fcount)from tb where col1=t.col1)
--2
select * from tb t where not exists(select 1 from tb where col1=t.col1 and fcount>t.fcount)
--結果
/*
col1 col2 fcount
----------- ----------- -----------
12 38 4
11 24 5*/
實例二
商品進貨報價表中保存有n種商品,每種商品分別對應m個供貨商的報價,我想得到這樣一個結果:從一個表中一眼能看出每種商品對應的最低商家報價和最高商家報價,怎麼做呢?
1)新建一個數據庫教程 test.mdb
2)導入info.mdb 和 info1.mdb 的數據表,分別為 info 和 info1,表的數據如下:
info
————–
商品名稱
1234
2345
info1
—————————
商品名稱 廠商 價格
1234 廠商1 10
1234 廠商2 20
1234 廠商3 30
2345 廠商1 40
2345 廠商2 50
2345 廠商3 60
3456 廠商1 70
3456 廠商2 80
3456 廠商3 90
3)新建一個查詢,打開 sql視圖 (視圖->sql視圖)
4)粘貼如下內容並運行
select info1.名稱, max(info1.價格) as 價格之最大值, min(info1.價格) as 價格之最小值
from info1
group by info1.名稱
having info1.名稱 in ( select info.名稱 from info);
5)運行結果如下:
查詢1:選擇查詢
———————————–
商品名稱 價格之最大值 價格之最小值
1234 30 10
2345 60 40