最近一直在做数据统计,在此过程中,遇到过好多种情况都是对一张表按照不同的条件进行多次统计,以前的做法是统计几次按照不同的条件left join 几次,虽然也能得到想要的结果,但是效率太低,反映在页面就是访问速度很慢。

今天在又一次遇到这种情况,要对一张表按照不同的条件进行七八次统计,不想在按照以前的思路来了,在网上一搜,果真可以通过case when语句进行统计,具体思路如下:

第一步:按照数据的共性,查询出来所有数据,包括要统计次数的那些字段

第二步:用把case when 包含在count函数中,然后机械的写就可以了。

第三步:看到如此高的效率,自己在一边偷着乐吧。

不多说了,上代码

--有一张表table1 字段有id,name,sex,age
--现在要求统计 男生人数,女生人数,年龄为25的人数,年龄为26的人数
select count(case
when sex = 'gril' then
1
end) 女生人数,
count(case
when sex = 'gril' then
1
end) 女生人数,
count(case
when age = 25 then
1
end) 25岁的人数,
count(case
when age = 26 then
1
end) 26岁的人数
from table1
where 1 = 1

  

sql 对一张表进行按照不同条件进行多次统计的更多相关文章

  1. SQL查询——同一张表的横向与纵向同时比较

    表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | nam ...

  2. 一条sql解决.一张表的数据复制到另外一张表

    如何把一个表的数组复制到一张表?也许很多人会把这个表查出来的数据再插入到另外一张表里面,这样很麻烦又要写代码逻辑去处理,其实一条sql语句就可以把一张表的数据复制到另外一张表,或者一张表的某一条数据复 ...

  3. sql 查出一张表中重复的所有记录数据

    1.在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下: select * from xi a where (a.username) in ...

  4. hive sql 查询一张表的数据不在另一张表中

    有时,我们需要对比两张表的数据,找到在其中一张表,不在另一张表中的数据 hql 如下: SELECT * FROM (SELECT id FROM a WHERE dt = '2019-03-17' ...

  5. 【随记】SQL备份一张表的数据

    SQL Server: SELECT  *  INTO  table_bak   FROM   table Oracle.MySQL.SQLite: CREATE TABLE table_bak AS ...

  6. 仅用一句SQL更新整张表的涨跌幅、涨跌率

    问题场景 各大平台店铺的三项评分(物流.服务.商品)变化情况: 商品每日价格的变化记录: 股票的实时涨跌浮: 复现场景 表:主键ID,商品编号,记录时的时间,记录时的价格,创建时间. 问题:获取每个商 ...

  7. [SQL] SQL 查出一张表中重复的所有记录

    在A表中存在一个字段“AccountId”,而且不同记录之间的“AccountId”值有可能会相同,现在就是需要查询出在该表中的各记录之间,“AccountId”值存在重复的项,这里count记录该字 ...

  8. 用sql从一张表更新数据到另外一张表(多表数据迁移)

    update TBL_1 A, TBL_2 B, TBL_3 Cset a.email=c.email_addrwhere a.user_id=b.user_id and b.un_id=c.un_i ...

  9. SQL将一张表中的数据插入到另一张表

    将表T_wz_wz中的部分数据插入到表t_wz_kc: ,,'Y' from t_wz_wz where yxbz='Y' --去重复 -- and wzid not in (select wzid ...

随机推荐

  1. Java Script基础(五) 内置对象Date

    在JavaScript中,系统的内置对象有Date对象.Array对象.String对象和Math对象等. 1.Date:用于操作日期和时间. 2.Array:用于在单独的变量名中存储一系列的值. 3 ...

  2. Oracle基础<5>--触发器

    一.触发器 触发器是当特定事件出现时自动执行的代码块.比如,每次对员工表进行增删改的操作时,向日志表中添加一条记录.触发器和存储过程是由区别的:触发器是根据某些条件自动执行的,存储过程是手动条用的. ...

  3. mac jdk设置

    mac系统一般默认会安装jdk 1.6,路径为/System/Library/Java/JavaVirtualMachines/1.6.0.jdk,此Jdk为系统默认jdk; 但某些框架/应用要求jd ...

  4. 如何优雅地制作精排 ePub —— 个人电子书制作规范及基本样式表

    随着大数据时代的到来,多种移动阅读终端方兴未艾 —— Amazon Kindle不再小众.各互联网巨头纷纷推出旗下的电子书阅读软件.有了阅读的软件/硬件支持,必不可少的就是阅读什么的问题了.ePub格 ...

  5. Part 18 Indexes in sql server

    Indexes in sql server Clustered and nonclustered indexes in sql server Unique and Non Unique Indexes ...

  6. MVC 使用Jquery实现AJax

    View <script type="text/javascript"> function GetTime() { $.get("Home/GetTime&q ...

  7. CSS之text-stroke

    啧啧啧( ̄︶ ̄),国庆人太多,所以假期还没结束就提前几天回来了.今天也是挤火车赶回来的,被夹在门里好尴尬啊~~ 回家的这几天在外婆家招待过的好爽啊,又是鱼又是肉,馋的我都不想走了. 然而自己在家只能“ ...

  8. xenserver xensource.log不断增长

    转载:http://blog.sina.com.cn/s/blog_4ca83f830100xded.html     相信很多人被Xenserver日志填满磁盘空间,导致机器最终挂掉的问题所困扰,我 ...

  9. webkit常见问题汇总

    前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, Resourc ...

  10. RAC监听与tns

    监听: 个人理解:本来想通过scan ip来配置tns总数报12545,后来通过vip来配置tns 11g rac的监听在安装时创建,由grid用户管理监听,listener.ora文件在$ORACL ...