在我们使用数据库的时候,可能会遇到需要进行统计的情况。

比如需要统计一下,下表中各个年份的胜负场数。

遇到这样的情况,我们应该怎么办呢?

在mysql中我们可以使用group by sum  case when 来解决这个问题,sql语句如下:

select date_year,
sum(case when win_lose = '胜' then 1 else 0 end) win,
sum(case when win_lose = '负' then 1 else 0 end) lose
from scores group by date_year;

结果如下:

+-----------+------+------+
| date_year | win | lose |
+-----------+------+------+
| 2005 | 1 | 1 |
| 2006 | 2 | 1 |
| 2007 | 0 | 1 |
| 2008 | 2 | 1 |
| 2009 | 0 | 2 |
| 2010 | 1 | 1 |
| 2011 | 2 | 0 |
| 2012 | 2 | 1 |
| 2013 | 1 | 1 |
| 2014 | 3 | 2 |
| 2015 | 2 | 2 |
| 2016 | 1 | 0 |
| 2017 | 1 | 1 |
| 2018 | 1 | 3 |
+-----------+------+------+
14 rows in set (0.00 sec)

MySQL中group by , sum , case when then 的使用的更多相关文章

  1. 转:深入研究mysql中group by与order by取分类最新时间内容

    鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里, (不知道是不是现在水平的限制,总之我还没找到在用ContentProvider时可以使用子查询),主要方法是用SQL ...

  2. 深入研究mysql中group by与order by取分类最新时间内容

    鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,(不知道是不是现在水平的限制,总之我还没找到在用 ContentProvider时可以使用子查询),主要方法是用SQL ...

  3. MYSQL中GROUP BY不包含所有的非聚合字段时的注意事项

    本文导读:在MYSQL中使用GROUP BY分组时,我们可以select 多个非聚合字段,但是这些字段不在GROUP BY中,这样的SQL查询在SQL SERVER.ORACLE中是不合理的,且会报错 ...

  4. 在MySQL中group by 是什么意思

    mysql语法中group by是什么意思? 在百度中搜索半天,最后找到一篇解释比较好的(不是博文,是百度知道,很郁闷那么多网友怎么就没人解释的清楚),链接如下: http://zhidao.baid ...

  5. MySQL中count和sum使用

    count COUNT()函数里面的参数是列名的的时候,那么会计算有值项的次数.(NULL 不计入, 但是''值计入) COUNT(*)可以计算出行数,包括null COUNT(1)也可以计算出行数, ...

  6. mysql中group by 的用法解析

    1. group by的常规用法 group by的常规用法是配合聚合函数,利用分组信息进行统计,常见的是配合max等聚合函数筛选数据后分析,以及配合having进行筛选后过滤. 假设现有数据库表如下 ...

  7. mysql中group by和order by混用 结果不是理想结果(转)

    文章转自 https://www.cnblogs.com/myphper/p/3767572.html 在使用mysql排序的时候会想到按照降序分组来获得一组数据,而使用order by往往得到的不是 ...

  8. MYSQL中GROUP BY的细节及SELECT语句顺序

    一.GROUP BY语句的细节 我们知道,在sql中,GROUP BY语句主要用来给数据分组,以便能对每个组进行聚集计算,但是GROUP BY也有一些限制需要知道: 1. GROUP BY字句可以包含 ...

  9. MYSQL 中GROUP BY

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

随机推荐

  1. c# 正则

    Regex reg = new Regex("^do(es)(xy)?$"); var result = reg.Match("doesxy"); foreac ...

  2. axios 使用post方式传递参数,后端接受不到

    参考 https://segmentfault.com/a/1190000012635783

  3. hibernate08--OpenSessionInView

    创建一个web项目,然后生成HibernateSessionFactory文件! package cn.bdqn.util; import org.hibernate.HibernateExcepti ...

  4. vue里computed的get和set

    computed里的对象有get和set方法. get是当该对象所依赖的变量发生变化是执行,重新returncomputed结果. set是该对象的值变化时会执行,并且将变化的结果作为参数传进set里 ...

  5. Oracle课程档案,第三天

    count(*):有多少行,对行做统计 count(x):列.... sum:和 avg:平均值 min:求最小值 max:求最大值 distinct:取出重复的值 count:计数 group by ...

  6. Python学习之旅(二十三)

    Python基础知识(22):进程和线程(Ⅰ) 1.多进程 (1)fork Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程 fork可以在Mac ...

  7. Javascript实现MD5加密

    /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as d ...

  8. 公众号对接绑定视频教程<推荐>【申明:来源于网络】

    公众号对接绑定视频教程<推荐>[申明:来源于网络] 地址: http://www.456wx.com/bbs/thread-123-1-1.html

  9. itoa()、atoi()、任意进制转换

    头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...

  10. Linux 安装mysql mariadb配置

    CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server ...