--
按某一欄位分組取最大(小)值所在行的資料
/*資料如下:
name val memo
a 2 a2(a的第二個值)
a 1 a1--a的第乙個值
a 3 a3:a的第三個值
b 1 b1--b的第乙個值
b 3 b3:b的第三個值
b 2 b2b2b2b2
b 4 b4b4
b 5 b5b5b5b5b5
*/--
建立表並插入資料:
create
table
tb(name
varchar(10
),val
int,memo
varchar(20
))insert
into
tb values('
a',
2,
'a2(a的第二個值)')
insert
into
tb values('
a',
1,
'a1--a的第乙個值')
insert
into
tb values('
a',
3,
'a3:a的第三個值')
insert
into
tb values('
b',
1,
'b1--b的第乙個值')
insert
into
tb values('
b',
3,
'b3:b的第三個值')
insert
into
tb values('
b',
2,
'b2b2b2b2')
insert
into
tb values('
b',
4,
'b4b4')
insert
into
tb values('
b',
5,
'b5b5b5b5b5')
go--
一、按name分組取val最大的值所在行的資料。
--方法1:
selecta.*
from
tb a
where
val =(
select
max(val)
from
tb where
name
=a.name)
order
bya.name
--方法2:
selecta.*
from
tb a
where
notexists
(select
1from
tb where
name
=a.name
andval
>
a.val)
--方法3:
selecta.*
from
tb a,(
select
name,
max(val) val
from
tb group
byname) b
where
a.name
=b.name
anda.val
=b.val
order
bya.name
--方法4:
selecta.*
from
tb a
inner
join
(select
name ,
max(val) val
from
tb group
byname) b
ona.name
=b.name
anda.val
=b.val
order
bya.name
--方法5
selecta.*
from
tb a
where
1>
(select
count(*
) from
tb where
name
=a.name
andval
>
a.val )
order
bya.name
/*name val memo
---------- ----------- --------------------
a 3 a3:a的第三個值
b 5 b5b5b5b5b5
*/--
二、按name分組取val最小的值所在行的資料。
--方法1:
selecta.*
from
tb a
where
val =(
select
min(val)
from
tb where
name
=a.name)
order
bya.name
--方法2:
selecta.*
from
tb a
where
notexists
(select
1from
tb where
name
=a.name
andval
<
a.val)
--方法3:
selecta.*
from
tb a,(
select
name,
min(val) val
from
tb group
byname) b
where
a.name
=b.name
anda.val
=b.val
order
bya.name
--方法4:
selecta.*
from
tb a
inner
join
(select
name ,
min(val) val
from
tb group
byname) b
ona.name
=b.name
anda.val
=b.val
order
bya.name
--方法5
selecta.*
from
tb a
where
1>
(select
count(*
) from
tb where
name
=a.name
andval
<
a.val)
order
bya.name
分組查詢最大 最小值sql
經典題目 查詢每個班級的最高分,查詢每種日誌的最晚記錄 1.查詢每個班級的最高分 不考慮同一分數的 思路 首先利用max group by取出每組最高的分數,再與表自連線 sql語句 select t1.id,t1.name,t1.calssid,t2.score from t zhb t1 sel...
分組查詢最大 最小值sql
經典題目 查詢每個班級的最高分,查詢每種日誌的最晚記錄 1.查詢每個班級的最高分 不考慮同一分數的 sql語句 select id,name,calssid,max score from select from t zhb order by score desc a group by calssid...
C PTA 求最大值最小值
用指標作函式引數,程式設計序求一維陣列中的最大和最小的元素值。函式介面定義 void maxmin int arr,int pt1,int pt2,int n 其中 arr pt1 pt2 n都是使用者傳入的引數,n為元素個數。函式求指標arr所指向的一維陣列中的最大和最小的元素值,並將最大值和最小...