统计操作

1、分组统计group by

select id,name,count(*) as '总数'  from test1 group by id,name     --group by   分组字段需要和显示字段一至  并且可以直接使用count(*)统计各有多少数量

2、case when 对数据进行分组

select
  case when (id<'1') then '1' when(id>='1' and id<='3') then '2'
  else '3'
  end 'work_age'
from test1
group by
  case when (id<'1') then '1' when(id>='1' and id<='3') then '2'
    else '3'  --group by 跟前面的一样。
  end

3、综合汇总操作

1、直接分类统计

select
count(*) as 总人数,
sum(case when gender=1 then 1 else 0 end) as '男生人数', --男生为1 女生为2
sum(case when gender=2 then 1 else 0 end) as '女生人数'
from test1

2、分组后在进行分类统计

select  id,
    count(*) as 总人数,

sum(case when id='1' then 1 else 0 end) as '男生人数',    --男生为1 女生为2

sum(case when id='2' then 1 else 0 end)  as '女生人数',

sum(case when id not in ('1','2') then 1 else 0 end)  as '不男不女人数'
from test1
group by id

--这里的ID可以当成班级

4、汇总条件及运行时间

--通过子查询进行汇总
select userid,username,count(*) from (
select userid,username,cdid,cdname from test2 where cdid='110'
) a
groupby userid,username
--0.12S
--直接通过关联查询后进行汇总
select userid,username,count(*) from test1 as a left join test2 on a.userid=b.userid where b.cdid='110' group by a.userid,a.username
--0.23S
--上面这两个汇总在不同情况下,运行时间各有长段,在当前情况下选择第一种比较好。
--在使用时根据不同情况选择不同的方式进行汇总。

最近用到的 sql 统计操作的更多相关文章

  1. SQL用法操作合集

    SQL用法操作合集   一.表的创建 1.创建表 格式: 1 CREATE TABLE 表名 2 (列名 数据类型(宽度)[DEFAULT 表达式][COLUMN CONSTRAINT], 3 ... ...

  2. SQLite支持的SQL数据操作

    事务处理 Posted on 2013 年 1 月 1 日 by 林溪   事务为一组SQL命令的集合,这些SQL命令在执行时不可进行分割,即要么全部执行这些SQL命令,要么一个都不进行执行,事务操作 ...

  3. SQL语句操作大全

    SQL语句操作大全   本文分为以下六个部分: 基础部分 提升部分 技巧部分 数据开发–经典部分 SQL Server基本函数部分 常识部分 一.基础 1.说明:创建数据库CREATE DATABAS ...

  4. MS SQL统计信息浅析下篇

       MS SQL统计信息浅析上篇对SQL SERVER 数据库统计信息做了一个整体的介绍,随着我对数据库统计信息的不断认识.理解,于是有了MS SQL统计信息浅析下篇. 下面是我对SQL Serve ...

  5. SQL统计——按照各种维度

    在SQLserver中可以按照各种维度进行统计,实现与EXCLE一样强大的功能. --========================== --Blog:<奔跑的金鱼> --Desc:&l ...

  6. sql server操作2:查询数据库语句大全【转】

    注:以下操作均建立在上篇文章sql Server操作1的数据基础之上 一.实验目的 熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询 二.实验内容和要求 使用SQL查询分析器查询数据,练 ...

  7. SQL写操作 设置内容 (数组转字符串)

    SQL写操作 设置内容 (数组转字符串) SQL set内容 SQL操作数组转字符串 SQL写操作 set内容 (数组转字符串) [ 封装方法 ] function getSqlSet( $data ...

  8. SQL 数据操作(实验六)

    SQL 数据操作 emp.dept 目标表结构及数据 INSERT 命令的使用与结果验证 2.1把一名新来雇员信息插入到EMP表中:雇员号:1011 姓名: 王晓明 入职日期:今天 ```insert ...

  9. SQL字符串操作汇总

    SQL字符串操作汇总 --将字符串中从某个字符开始截取一段字符,然后将另外一个字符串插入此处 select stuff('hello,world!',4,4,'****')   --返回值hel*** ...

随机推荐

  1. Silverlight中使用MVVM(4)—演练

    本来打算用MVVM实现CRUD操作的,这方面例子网上资源还挺多的,毕竟CRUD算是基本功了,因为最近已经开始学习Cailburn框架了,感觉时间 挺紧的,这篇就实现其中的更新操作吧.         ...

  2. 如何测试你给客户端app开的接口

    这里介绍一款工具用于测试后台给客户端开的接口. 采用http或者https 采用表单或者json格式 这款工具之前是谷歌浏览器的一款插件,后来出现了各个平台的客户端.非常实用. 名叫postman 官 ...

  3. ABP框架服务层的接口与实现(增删改查)

    public interface ITaskAppService : IApplicationService { IList<TaskDto> GetAllTasks();//所有 Get ...

  4. 代理(Proxy)模式 ,桥梁(Bridge)模式

    一:代理模式 1 根据名字我们就可以理解为:代替别人管理 2 什么情况下使用代理模式呢? 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系 ...

  5. UEFI+GPT与BIOS+MBR各自有什么优缺点?

    1.分区数量上,gpt好像可以支持无限个分区,不过window上只认128个,而且gpt分区不分主分区,逻辑分区,可以理解为全部都是主分区,就相当于可以允许你一个分区一个系统,128个系统了.而这是m ...

  6. WinForm中遇到Label要显示的内容太长,自动换行

    很多朋友都会在开发WinForm中遇到Label要显示的内容太长,但却不能换行的问题.这里我总结了几种方法,供大家参考. 第一种是把Label的AutoSize属性设为False,手动修改Label的 ...

  7. 3.C#知识点:is和as

    IS和AS 都是用于类型转换的操作. 但是这两个有什么区别呢? 简单的来说 is 判断成立则返回True,反之返回false.as 成立则返回要转换的对象,不成立则返回Null. 下面掏一手代码来说明 ...

  8. Java下载execl表格

    Java用POI往execl表格中写数据,并下载下来有两种方式 1.用poil的API创建表格,并设计好表格格式,然后往里面写数据 /** * execl导出 创建表格式,并写入数据 * @param ...

  9. redis-java基础操作

    安装 windows版的Redis,打开即可,默认端口6379 导入两个jar包  commons-pool2-2.3.jar   jedis-2.7.0.jar 一 写配置文件 redis.setM ...

  10. Java - "JUC" ReentrantReadWriteLock

    Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock ReadWriteLock 和 ReentrantReadWriteLock介绍 ReadWriteLo ...