sql 聚合函數、排序方法詳解

聚合函數 count,max,min,avg,sum...
select count (*) from T_Employee
select Max(FSalary) from T_Employeemysql

排序 ASC升序 DESC降序
select * from T_Employee order by Fagesql

先按年齡降序排列。若是年齡相同,則按薪水升序排列
select * from T_Employee order by FAge DESC,FSalary ASC函數

order by 要放在 where 子句以後sqlserver

通配符過濾
通配符過濾用like
單字符通配符‘_'
多字符通配符‘%'
select * from T_Employee where FName like '_erry'.net

NULL 是不知道的意思,而不是沒有server

SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函數
請看下面的 "Products" 表:htm

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36
3 telephone 280 159 57排序

假如 "UnitsOnOrder" 是可選的,並且能夠包含 NULL 值。get

咱們使用以下 SELECT 語句:it

SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
FROM Products
在上面的例子中,若是有 "UnitsOnOrder" 值是 NULL,那麼結果是 NULL。

微軟的 ISNULL() 函數用於規定如何處理 NULL 值。

NVL(), IFNULL() 和 COALESCE() 函數也能夠達到相同的結果。

在這裏,咱們但願 NULL 值爲 0。

下面,若是 "UnitsOnOrder" 是 NULL,則不利於計算,所以若是值是 NULL 則 ISNULL() 返回 0


用SQL語句查詢NULL的數據不能用=或<> 而用is NULL或者is not NULL
select * from T_Employee where FName is NULL

in(23,25)同時匹配兩個值。至關於 23 or 25

between 20 and 30 匹配介於20到30之間的數

BETWEEN 操做符在 WHERE 子句中使用,做用是選取介於兩個值之間的數據範圍。
BETWEEN 操做符
操做符 BETWEEN ... AND 會選取介於兩個值之間的數據範圍。這些值能夠是數值、文本或者日期。

SQL BETWEEN 語法
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2原始的表 (在實例中使用:)
P(www.111cn.net)ersons 表:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue www.111cn.netNew York
3 Carter Thomas Changan Street Beijing
4 Gates Bill Xuanwumen 10 Beijing
BETWEEN 操做符實例
如需以字母順序顯示介於 "Adams"(包括)和 "Carter"(不包括)之間的人,請使用下面的 SQL:

SELECT * FROM Persons
WHERE LastName
BETWEEN 'Adams' AND 'Carter'
結果集:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York


更多詳細內容請查看:http://www.111cn.net/database/110/BETWEEN-mysql-sql.htm

group by分組

GROUP BY 語句
GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。

SQL GROUP BY 語法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name


select FAge, count(*) from T_Employee
Group by Fage
先把相同的Fage分一組,再統計每一組的個數

group by子句要放在where子句以後。若是想取某個年齡段人數大於1的,不能用where count(*) > 1 ,由於聚合函數不能放在where子句以後。要用having子句
Having是對分組後的列進行過濾,能用的列和select中的同樣。以下例中則不能用having Fsalary>2000 只能用where Fsalary>2000
select FAge, count(*) from T_Employee
Group by FAge
having count(*) > 1;

限制結果集的範圍
select Top 3 * from T_Employee
order by FSalary DESC

從第六名開始選3個.2005後能夠用Row_Number函數
select Top 3 * from T_Employee
where FNumber not in(select TOP 5 FNumber from T_Employee order by FSalary DESC)
order by FSalary DESC
from:http://www.111cn.net/database/mssqlserver/39727.htm

相關文章
相關標籤/搜索