sql 一些语法 聚合函数,…

判断内容是不是空:

where t.wlccid is not null      //xx不是空
where t.wlccid is null            //xx是空 (不是 = '')

聚合函数,group by ,having 

理解第一, 一起学的时候理解了,但时间长不用就忘了,但既然理解了.随便一看就懂了

group by :

是配合聚合函数使用的. select里的如果只有一个聚合函数 .当然就是计算所有的结果集就用不着group by了

如果select里还有别的列.如select SUM(mon),name from table_xx group by name.必须加上groupby .

既然要sum 没有group by 就不知道按什么来sum,sum谁 .要知道怎么来区分成不一样的组.分别sum组.sum才有意义.要不然怎么sum .

聚合函数里的列不能用在groupby里.因为这样根本就不符合日常逻辑 既然要count某个列.还拿他去分组(根据这个列的值的不同来分开组 . 比如group by 年级. 不同年级的人被分到不同的组了. 这个时候去不同的组统计不同的年级这不是傻吗.每个组count(年级)都是一.没意义) .不合逻辑.

没有聚集函数也能用groupby.但完全没意义

having:

having和groupby配合使用的.having和where 是有些联系的.都是筛选,不同:having是筛选组(groupby分成的组,having来找那个组符合条件) where是筛选记录(from语句组成的记录集)的. 

例:
select 部门编号,count(*) from 员工信息表 where 工资>=2000 group by 部门编号 having count(*)>1
先是得到表里大于2000的.然后通过部门编号的不同把前面的子集分成不同的组.然后不同的组计算count(*).这个时候得到的结果就是 不同的组的部门编号和这个部门编号的组下的count(*). 然后对前面这样两个列的结果集开始筛选,count(*)>1的留下

最后: groupby是为了给聚集函授分组, having是为了筛选分组的结果


原文地址:https://www.cnblogs.com/wangduqiang/p/4180933.html