SqlServer系列笔记――查询过滤分组排序
因此下面的语句并不会只保留Fdepartment进行重复值处理: ? ? ?SELECT DISTINCT FDepartment,FSubCompany? ? ? ?FROM T_Employee 2.?GROUP BY 按照年龄进行分组统计各个年龄段的人数: SELECT FAge,Count(*) FROM T_Employee GROUP BY Fage GROUP BY子句必须放到WHERE语句的之后? 没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的 (聚合函数中除外) 错误: ?SELECT FAge,FSalary FROM T_Employee GROUP BY FAge? 正确: ?SELECT FAge,AVG(FSalary) FROM T_Employee GROUP BY FAge 3.Having 在Where中不能使用聚合函数,必须使用Having,Having要位于Group By之后: ? ? ?SELECT FAge,COUNT(*) AS 人数 FROM T_Employee? ? ? GROUP BY FAge? ? ? HAVING COUNT(*)>1? 注意Having中不能使用未参与分组的列,Having不能替代where。作用不一样,Having是对组进行过滤。 4.In Delete T_Employee where FId in(21,22) SELECT FAge,FNumber,FName FROM T_Employee? WHERE FAge IN (23,25,28)? 范围值: ? ?SELECT * FROM T_Employee WHERE FAGE>=23 AND FAGE <=27? ? ? SELECT * FROM T_Employee WHERE FAGE BETWEEN 23 AND 27 5.ORDER BY 数据排序 ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序, 还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)。 按照年龄升序排序所有员工信息的列表: ? ? SELECT * FROM ?T_Employee ORDER BY FAge ASC? 按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 : 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? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |