MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用
在统计查询中,经常会用到count函数,这里是基础的 MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用
-- 创建表
CREATE TABLE `tb_student` (
`id` int(11) NOT NULL,
`stu_name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '学生姓名',
`tea_name` varchar(255) DEFAULT NULL COMMENT '教师姓名',
`stu_class` varchar(255) DEFAULT NULL COMMENT '所在班级名称',
`stu_sex` varchar(255) DEFAULT NULL COMMENT '学生性别',
`stu_sex_int` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 插入数据
/*
INSERT INTO `tb_student` VALUES ('0', '小明', '老张', '一班', '男',0);
INSERT INTO `tb_student` VALUES ('1', '小红', '老张', '一班', '女',0);
INSERT INTO `tb_student` VALUES ('2', '小刚', '老王', '一班', '男',0);
INSERT INTO `tb_student` VALUES ('3', '小兰', '老王', '一班', '女',0);
INSERT INTO `tb_student` VALUES ('4', '小军', '老张', '二班', '男',0);
INSERT INTO `tb_student` VALUES ('5', '小芳', '老张', '二班', '女',0);
INSERT INTO `tb_student` VALUES ('6', '小强', '老王', '二班', '男',0);
INSERT INTO `tb_student` VALUES ('7', '小娜', '老王', '二班', '女',0);
INSERT INTO `tb_student` VALUES ('8', null, null, null, null,null);*/
/***************************/
EXPLAIN SELECT count(2) from tb_student;
SELECT count(*) from tb_student; //8
SELECT count(1) from tb_student; //8
SELECT count(stu_name) from tb_student; //7
SELECT count(NULL) from tb_student; //0
/**总结
当count的表达式为 NULL 时 不会计数 ,所以count(fieldName) 当fieldName 为null时 不会计数
所以 count(n)用于查询表的记录数
*/
SELECT COUNT(DISTINCT tea_name) from tb_student; SELECT DISTINCT tea_name from tb_student; SELECT *,count(tea_name) from tb_student GROUP BY tea_name;
/**查询每个老师在一班教了多少学生,在二班教了多少学生*/
select *,count(id) FROM tb_student GROUP BY tea_name,stu_class;
/*这种方法不太直观我们可以把结果行转列更加清晰表达每个教师交每个班的人数*/
SELECT tea_name,
COUNT(case when stu_class='一班' then 1 ELSE NULL END ) AS '一班人数',
COUNT(case when stu_class='二班' then 5 ELSE NULL END ) AS '二班人数'
FROM tb_student GROUP BY tea_name;
/**每个老师各自教了多少学生*/
SELECT tea_name,
COUNT(*) AS '学生人数'
FROM tb_student GROUP BY tea_name;
MYSQL 行转列 以及基本的聚合函数count,与group by 以及distinct组合使用的更多相关文章
- MySQL 行转列 -》动态行转列 -》动态行转列带计算
Pivot Table Using MySQL - A Complete Guide | WebDevZoomhttp://webdevzoom.com/pivot-table-using-mysql ...
- MySql查询语句中解决“该列没有包含在聚合函数或者groupby子句中”的相关问题方法
首先引入语句来源,表结构和数据如下: 需求是:查出员工(personname)在不同店铺(store)的总薪酬(salary),相同店铺输出store,不同店铺输出multi_store. 正确查询语 ...
- 选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中 T-SQL核心语句形式: SELECT --指定要选择的列或行及其限定 [INTO ] --INTO子句 ...
- 选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中
今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下: select [OrderID],[ ...
- mysql行转列、列转行示例
最近在开发过程中遇到问题,需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 借此机会,在网上查阅了相关方法,现总结出一种比较简单易懂的方法备用. ...
- MySql 行转列 存储过程实现
同学们在使用mysql的过程中,会遇到一个行转列的问题,就是把多条数据转化成一条数据 用多列显示. 方法1. 实现方式用下面的存储过程,表名对应的修改就行. BEGIN declare current ...
- mysql 行转列 列转行
一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id ) ...
- [转]mysql 行转列 列转行
原文地址:http://www.cnblogs.com/xiaoxi/p/7151433.html 一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABL ...
- mysql行转列,单列转多行
行转列 使用CASE语句: SELECT SUM(CASE USER_NAME='A' THEN KILLS END) AS 'A', SUM(CASE USERNAME='B' THEN KILL ...
随机推荐
- 用C#代码实现类似QQ窗体的“上、左、右”停靠功能
大家都知道QQ有一个自动停靠功能,即“上.左.右”,当你把窗体拖到屏幕边缘,然后移开鼠标它会自动缩放,然后只显示一小小点出来,我们仔细观察会发现其实它只露3像素左右的边缘,当你鼠标移上去它又会伸出来, ...
- AR入门系列-04-vuforia识别多个图片及同屏展示
首先,我们需要在官网中识别数据库添加多张图片,并将数据库下载下来覆盖原来的数据库 在 Hierarchy视图中需要多个ImageTarget 将新建的ImageTarget(1) 选择数据库中的识别图 ...
- C++ 构造函数或析构函数调用虚函数
构造函数和析构函数中的虚函数 在执行基类构造函数时,对象的派生类部分是未初始化的.实际上,此时对象还不是一个派生类对象. 为 了适应这种不完整,编译器将对象的类型视为在构造或析构期间发生了变化.在基类 ...
- 算法模板——sap网络最大流 2(非递归+邻接表)
实现功能:同最大流 1 这里面主要是把前面的邻接矩阵改成了邻接表,相比之下速度大大提高——本人实测,当M=1000000 N=10000 时,暂且不考虑邻接矩阵会不会MLE,新的程序速度快了很多倍(我 ...
- 深入理解 JavaScript 异步系列(5)—— async await
第一部分,ES7 中引入 async-await 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6532734.html 未经作者允许,不得转载~ 前面介绍 ...
- JVM运行和类加载过程
JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) (该知识点引用 http://www.cnblogs.com/dingyingsi/p/3760730.h ...
- 很污的机器学习:从xhamster网站找到喜欢的片子
前言 最近迷上了看黄片(大雾).每次总是去搜索想看的片子,什么asian porn anal pussy 什么的我都不知道. 搜索着搜索着我手也累了,而且我喜欢的片子也是有一定的特征的,我不想把所有的 ...
- Maven使用说明
maven的作用. Maven 是一个项目管理和构建自动化工具.可以方便我们导入jar包. maven的安装. 要想安装maven,首先你需要安装jdk,并且配置jdk环境变量.右键点击计算机,选择属 ...
- mysql新建数据库时的collation选择(转)
转自别处的文章.末尾附原文链接 mysql的collation大致的意思就是字符序.首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则.collation做 ...
- 有个程序猿要去当CEO了:(二)扬帆起航
合同签好了. 从昨天下午三点半,一直修改到晚上七点半,才确定签下. 这过程中,有一点讨论得比较久: 就是甲方要不要也拿底薪. 甲方是这样说的:"总经理拿N仟元,董事长不要说比总经理高,但是也 ...