数据库case,when学习

前几天工作中遇到了一个数据库统计相关的东西,主要使用case,when实现,现在说说基本情况:

有两个表school,studens,其中

school表结构如下:

students表结构如下:

其中sex=1代表男,sex=2代表女

现要求出现如下的结果集:

学校id,学校名,学校总人数,男生总人数,女生总人数

方案:

1,将school表和students表分别查询统计出学校总人数,男生总人数,女生总人数,然后将结果集拼起来就行了。此方法比较传统,想法简单,但是sql过长。

2.采用case,when语句,在count聚合函数使用,具体代码如下:

SELECT  c.id ,
        c.NAME ,
        ( c.boyCount + c.girlCount ) AS TotalCount ,
        c.boyCount ,
        c.girlCount
FROM    ( SELECT    b.id ,
                    b.name ,
                    COUNT(CASE WHEN a.sex = 1 THEN 1
                               ELSE NULL
                          END) AS boyCount ,
                    COUNT(CASE WHEN a.sex = 2 THEN 1
                               ELSE NULL
                          END) AS girlCount
          FROM      [guagua_new_event_system_test].[dbo].[students] a ,
                    [guagua_new_event_system_test].[dbo].[school] b
          WHERE     a.school_id = b.id
          GROUP BY  b.id ,
                    b.name
        ) AS c

算是数据库的一种学习吧!

路漫漫其修远兮,吾将上下而求索!

时间: 2024-10-13 01:53:52

数据库case,when学习的相关文章

Oracle DBA数据库高级工程师职业学习指南与职业规划视频课程(免费)

Oracle DBA数据库高级工程师培训课程是风哥独自研发的精品实战课程,本路线图主要是让大家快速就业.高薪就业.课程主要讲解Oracle公司简介,Oracle数据库简介,为什么要学习Oracle数据库?,学习Oracle就业前景如何?,学习Oracle数据库待遇如何?Oracle数据库适合于哪些人员学习?如何学好Oracle数据库? Oracle DBA数据库高级工程师学习指南: Oracle公司简介 Oracle数据库简介 为什么要学习Oracle数据库? 学习Oracle就业前景如何? 学

数据库引擎开发以及常见数据库内部原理学习(1)

数据库引擎开发 学习王涛老师的数据库引擎课程已经是很久之前的事情了,限于当时自身的能力,特别是对数据库的理解方面的欠缺,当时可以说是囫囵吞般的学习,尽管如此,当时学习的收获依旧非常之大,而时至今日,自认为自身对数据库的理解更上一层楼,也因为相对复杂多变的现代数据库,这个数据库模型相对于其他数据库来说简单得多,所以重新翻出来,再次学习,试图在源码层面理清楚各种数据库的架构! 因为是笔记类型的博文,所以会不断更新. 线索 数据库发展 关系型数据库理论 NoSQL数据库的介绍 1.记录: 谈谈数据库的

《NOSQL数据库入门》学习笔记

<nosql数据库入门> 第1章 nosql数据库的基础知识 1 1.1 关系型数据库和nosql数据库 2 1.1.1 什么是nosql 2 1.1.2 关系型数据库简史 2 1.1.3 数据库的分类 3 1.1.4 关系型数据库的优势 5 1.1.5 关系型数据库的不足 5 1.1.6 nosql数据库 9 1.2 nosql数据库是什么 12 1.2.1 键值存储 13 1.2.2 面向文档的数据库 14 1.2.3 面向列的数据库 14 1.3 如何导入nosql数据库 16 1.3.

Flas-SQLAchemy数据库操作使用学习笔记

Flas-SQLAchemy数据库操作使用学习笔记 1.为你的Flask应用加载Flask-SqlAlchemy扩展 Code example: 1.1from flask import Flask f rom flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' db = SQLAlchemy(ap

数据库中间件DBLE学习(二) 学习配置schema.xml

前言 一边有一个经常引诱我让我"娱乐至死"的视频,还有一个不停"鞭策"我让我快点学习的大BOSS.正是有这两种极端的爱才让我常常在自信中明白自己努力的方向.嗯,"人间不值得"! SCHEMA.XML介绍 上一篇写了:数据库中间件DBLE学习(一) 基本介绍和快速搭建,主要介绍快速安装.在安装的过程中,我们配置了schema.xml文件.schema.xml是一个比较重要的文件.该文件提供了逻辑库,逻辑表,分片规则,数据分片,物理数据库等配置.它主

HTML5 indexedDB数据库的入门学习(二)

上一篇关于indexedDB的学习笔记主要写了indexedDB数据库的基本操作—增删改查:但是为什么我们要用indexedDB呢?为什么indexedDB受到了开发者们的青睐呢?最主要的就是indexedDB的几个核心功能:有了游标和索引和范围才能真正发挥indexedDB威力 1.索引:为什么它叫indexedDB?因为它提供给了我们通过索引(index)去查询我们需要的值; 2.游标:游标提供给我们循环查询到的数据, 3.范围:和游标一起结合指定我们需要循环的范围, 4.索引.游标.范围的

HTML5 indexedDB数据库的入门学习

笔者早些时间看过web sql database,但是不再维护和支持,所以最近初步学习了一下indexedDB数据库,首先indexedDB(简称IDB)和web sql database有很大的差别,因为IDB不像web sql database那样用数据库语句去操作浏览器本地数据库(有过数据库基础看起来会比较容易),及关系数据库,IDB更像是NoSQL数据库,不能使用sql语句去查询,所以理解上会比web sql database要难一点:下面我主要介绍indexedDB数据库的基本操作:增

DDL数据库查询操作学习

一 数据库初识 l SQL是Structured Query Language(结构化查询语言)的缩写. l SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的. 二 数据库的组成 l 1.一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义. l 2.一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项. l 3.一个表或者是一个基本表或者是一个视图.基本表是实际存储在数据

数据库分区入门学习

转自http://blog.csdn.net/natureice/article/details/5833919 用作自己学习 摘要:在大量业务数据处理的项目中,能考虑使用分区表来提高应用系统的性能并方便数据管理,本文周详介绍了分区表的使用. 在大型的企业应用或企业级的数据库应用中,要处理的数据量通常能达到几十到几百GB,有的甚至能到TB级.虽然存储介质和数据处理技术的发展也非常快,不过仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区