①用途:mysql
將空值替換成其餘值sql
返回第一個非空值express
②表達式:函數
COALESCE是一個函數, (expression_1, expression_2, ...,expression_n)依次參考各參數表達式,遇到非null值即中止並返回該值。若是全部的表達式都是空值,最終將返回一個空值。使用COALESCE在於大部分包含空值的表達式最終將返回空值。post
③實例:spa
ROW_NUMBER()3d
說明:返回結果集分區內行的序列號,每一個分區的第一行從1開始。
語法:ROW_NUMBER () OVER ([ <partition_by_clause> ] <order_by_clause>) 。
備註:ORDER BY 子句可肯定在特定分區中爲行分配惟一 ROW_NUMBER 的順序。
參數:<partition_by_clause> :將 FROM 子句生成的結果集劃入應用了 ROW_NUMBER 函數的分區。
<order_by_clause>:肯定將 ROW_NUMBER 值分配給分區中的行的順序。
返回類型:bigint 。code
應用實例blog
/*以FoodPrice列排序並顯示排序後的行號*/ SELECT ROW_NUMBER() OVER(ORDER BY FoodPrice DESC) AS RowId,* FROM dbo.Food
/*以FoodType分組,而後以FoodPrice排序並顯示所在分組的相應行號*/ SELECT ROW_NUMBER() OVER(PARTITION BY FoodType ORDER BY FoodPrice DESC) AS RowId,* FROM dbo.Food
/*以FoodType分組,而後以FoodPrice排序並顯示所在分組的相應行號,若是排序字段字相等則顯示相同的行號, 並跳過所在的真實行號*/ SELECT RANK() OVER(PARTITION BY FoodType ORDER BY FoodPrice) AS RowID,* FROM dbo.Food
/*以FoodType分組,而後以FoodPrice排序並顯示所在分組的相應行號,若是排序字段字相等則顯示相同的行號, 忽略相同行號,依次遞增*/ SELECT DENSE_RANK() OVER(PARTITION BY FoodType ORDER BY FoodPrice) AS RowID,* FROM dbo.Food
如圖實際使用排序
-- 按狀態分組,而後按單價降序展現 select row_number() over(partition by t1.order_status order by t1.goods_price desc) as rank,t1.* from orderinfo t1
-- 按狀態分組,而後按單價升序展現 select row_number() over(partition by t1.order_status order by t1.goods_price asc )as rank,t1.* from orderinfo t1
-- 按狀態分組,而後取出該分組中價錢最的數據 select * from ( select row_number() over(partition by t1.order_status order by t1.goods_price desc ) as rank,t1.* from orderinfo t1) ta where ta.rank=1;