zoukankan      html  css  js  c++  java
  • 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是为了筛选分组的结果


  • 相关阅读:
    SQL Server 2008R2 附件数据库问题记录
    关于.NET C#调用Sqlite的总结二
    关于.NET C#调用Sqlite的总结一
    MS Server中varchar与nvarchar的区别
    Intellij IDEA中使用Debug调试
    使用idea关联mysql时报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezon'
    学Redis这篇就够了
    java的动态代理机制详解
    mybatis-sql执行流程源码分析
    mybatis
  • 原文地址:https://www.cnblogs.com/wangduqiang/p/4180933.html
Copyright © 2011-2022 走看看