sql server排序之通配符过滤与数据分组

发布时间:2020-03-08编辑:脚本学堂
本文介绍下,有关sql server排序的相关内容,包括使用通配符进行数据的过滤,以及数据分组的相关知识。有需要的朋友参考下吧。

在sql server中,ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)但默认情况是升序。

按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序:
 

复制代码 代码示例:
SELECT * FROM T_Employee ORDER BY FAge DESC,FSalary DESC(多个排序条件)

ORDER BY子句要放到WHERE子句之后 :
 

复制代码 代码示例:
SELECT * FROM T_Employee WHERE FAge>23 ORDER BY FAge DESC,FSalary DESC

通配符过滤关键字使用LIKE 。

单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。

例如:以单个字符开头,剩余部分为“hiya”
 

复制代码 代码示例:
SELECT * FROM T_Employee WHERE FName LIKE '_hiya'

多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字符。 “k%”匹配以“k”开头、任意长度的字符串。
检索姓名中包含字母“n”的员工信息:
 

复制代码 代码示例:
SELECT * FROM T_Employee WHERE FName LIKE '%n%'

来看些具体的例子吧。

例子:
 

复制代码 代码示例:

-非o开头,包含o的字符
select * from T_Employee where FName like '[^o]%o%_'
--非o结尾,包含o的字符
select * from T_Employee where FName like '%o%[^o]'
--非o开头和结尾,包含o的字符串
select * from T_Employee where FName like '[^o]%o%[^o]'

--Group By多条件分组时,将条件相加,看是否相等相加。
   --分组的两种情况
   --1 select 中查询的字段与group by 中字段一样
   --错误:
   select FName ,FAge ,COUNT (*)  from T_Employee group by FName
   --正确:
   select FName ,FAge ,COUNT (*)  from T_Employee group by FName,FAge
   --正确2:
      select FName ,FAge  ,COUNT (*) from T_Employee group by FName,FAge
      select FAge  ,COUNT (*) from T_Employee group by FAge
  --2 group by 中未分组的字段在 select 中是聚合函数
        select COUNT (FName) as 人数 ,FAge  from T_Employee group by FAge
       Go
       
 --分组之后的结果集条件Having
select FAge  ,COUNT (*) from T_Employee
group by FAge
having COUNT(*)>1
GO