SQLServer学习(附加子句查询)(三)

1)Order By (排序)

单个关键字排序:

SELECT WorkNo,NAME,DeptName,InDate 
FROM S_A_User 
WHERE InDate IS NOT NULL 
ORDER BY InDate DESC

按数据录入日期进行员工排序;

多个关键字排序:

SELECT WorkNo,NAME,DeptName,InDate
FROM S_A_User
WHERE InDate IS NOT NULL
ORDER BY DeptName DESC,InDate ASC

使用逗号分隔,升序、降序写在排序字段之后;

2)Group By (分组)(注意:使用Group by子句,前面的select后跟的字段必须出现在group by后面或者是写在select中的聚集函数(如sum avg等函数)中,否则会无法分组报错)

group by 指的就是分组,那以什么字段进行分组就是by后面接的字段,就像是统计一个班学生男女各多少,就首先要将学生以性别字段进行分组,然后计数统计

SELECT Sex,COUNT(*) FROM S_A_User GROUP BY Sex

SELECT Sex,COUNT(*) FROM S_A_User WHERE DeptName LIKE '%设计管理部%' GROUP BY Sex
View Code

3)Having (分组后设置条件) 注意:对于分组以后的条件,一定要放到having中 

作用:是跟在Group By子句后面,为其设置条件的

那与Where有什么区别呢?

 如下示例代码,是选出人数大于10的部门

SELECT DeptName,COUNT(WorkNo) FROM  S_A_User GROUP BY DeptName HAVING COUNT(WorkNo)>=10
SELECT DeptName,COUNT(*) FROM S_A_User
WHERE Sex='Male'
GROUP BY DeptName HAVING COUNT(*)>10
统计男性人数超过10的部门男性人数

4)into (将查询出来的结果放到一张表(临时表)中)

SELECT *
INTO #tmpwork
FROM S_A_User
WHERE Sex='Male'

#tmpwork 中的#表示临时表;

临时表与基本表的区别:

临时表只存在当次查询中,关闭查询后,临时表中的数据清除。

总结

End

原文地址:https://www.cnblogs.com/LeeSki/p/12303776.html