sql分組取最大
『壹』 sql查詢取分組最大值
selectt1.分類,t1.商品名稱,table.庫存,t1.更新時間
from (
select 分類,商品名稱,max(更新時間) 更新時間 from table
group by 分類,商品名稱
) t1
inner join table on t1.分類=table.分類 and t1.商品名稱=table.商品名稱 and t1.更新時間
=table.更新時間
(1)sql分組取最大擴展閱讀:
關於SQL最大值查詢語句的記錄
SELECT
bsnum,
STATE AS FILE_STATE
FROM
FILE_RECORD r
WHERE
STATE =(
SELECT
MAX(STATE)
FROM
FILE_RECORD
WHERE
bsnum = r.bsnum
);
小技巧:有時需要測試sql語法但又覺得創建表麻煩,可以使用創建一個臨時表,如下:
select id, count(t.id) from
(
select 1 as id, 2 as age, 'F' as sex from al union
select 2 as id, 2 as age, 'M' as sex from al union
select 3 as id, 3 as age, 'F' as sex from al union
select 4 as id, 4 as age, 'M' as sex from al
)t
『貳』 sql查詢 分組後 每組某欄位值最大的一行所有列
按照員工ID分組,取出ID值最大的一行
1、第一個方法,需要考慮ID有重復值的問題,如果最大值存在重復值,那麼結果也重復。
SELECT*
FROM員工信息變化表T1
WHEREid=(SELECTMax(id)
FROM員工信息變化表T2
WHERET1.員工ID=T2.員工ID)
2、第二個方法:該語句是在SQL Server中編寫的,應該不適用於MySQ和Oracle。排名函數是SQL Server2005中新增的功能,不適用SQL Server 2000
SELECT*
FROM(SELECTrow_number()OVER(PARTITIONBY員工IDORDERBYidDESC)
ASROW_NUM,
*
FROM員工信息變化表)T1
WHEREROW_NUM=1
『叄』 SQL 分組篩選取標識最大的那一行
假設數據表名為haha,內容如下
id name data
1 ABC 2
2 ABC 3
3 ABC 5
1 DEF 3
2 DEF 4
只允許使用查詢,不能使用創建表的語句,結果中name列的值具有唯一性且包含原表中該列所有的值,如果有重復的,只取對應id列的值為最大的。查詢結果為
id name data
3 ABC 5
2 DEF 4
以上只是假設,實際數據表大小超過600MB
『肆』 sql語言 怎麼求每組最大,就是用group by 分組後,求每組某列最大
在分組中使用max()函數即可。
例圖中表格:
如果是最小,則可以使用 min()函數
『伍』 求助sql分組取最大唯一值
select max(aaaa) from (select distinct (值) aaaa from 表名 group by 分組欄位) T;
其中distinct()過濾重復值,max()取最大值。
『陸』 sql如何求分組計數之後計數的最大值
插入測試記錄:
[sql] view plain
insertintostudentsvalues('數學','Jack','Tianjin',80)
insertintostudentsvalues('數學','Jordan','Tianjin',80)
insertintostudentsvalues('數學','James','Beijing',55)
insertintostudentsvalues('英語','Jack','Tianjin',90)
insertintostudentsvalues('英語','Jordan','Tianjin',60)
insertintostudentsvalues('英語','James','Beijing',100)
insertintostudentsvalues('語文','Jack','Tianjin',60)
insertintostudentsvalues('語文','Tom','Tianjin',77)
insertintostudentsvalues('語文','Jordan','Tianjin',68)
想要抓取每個科目第一名的整條信息,可以使用Row_number()函數:
select*
from(
selectcourse,stu_name,city,score,ROW_NUMBER()over()asrn
fromstudents
)a
wherea.rn<=1;