在SQL中对同一个字段不同值,进行数据统计操作

 更新时间:2020年10月20日 11:27:31   作者:taojin12  
这篇文章主要介绍了在SQL中对同一个字段不同值,进行数据统计操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

应用场景: 需要根据印章的不同状态,统计不同状态下印章数量。

刚开始百度,确实写搜到了不同的答案,但只能怪自己对sql语法解读不够,还是没写出来,导致写出了下面错误的写法。

select b.corporateOrgName, b.corporateOrgGuid companyId,
count(case when bc.ftype not in(1,2) then 1 else 0 end ) total,
count(case when bc.ftype in(3,4,5) then 1 else 0 end ) usetotal,
count(case when bc.ftype = 6 then 1 else 0 end ) saveTotal,
count(case when bc.ftype = 7 then 1 else 0 end ) returnTotal
from B_seal_cycle bc
join B_seal b
on bc.sealId = b.id
where b.corporateOrgName like '%%'
group by b.corporateOrgName,b.corporateOrgGuid

逻辑上通了,可就是怎么都得不到理想的接口,这样写统计的每一个数据都一样呀。改变之后的正确写法

select b.corporateOrgName, b.corporateOrgGuid companyId,
count(case when bc.ftype not in(1,2) then 1 end ) total,
count(case when bc.ftype in(3,4,5) then 1 end ) usetotal,
count(case when bc.ftype = 6 then 1 end ) saveTotal,
count(case when bc.ftype = 7 then 1 end ) returnTotal
from B_seal_cycle bc
join B_seal b
on bc.sealId = b.id
where b.corporateOrgName like '%%'
group by b.corporateOrgName,b.corporateOrgGuid

你看出不同之处了嘛? 把else 0 去掉就得到了正确的结果。

遇到的问题

1、 对case when 语法,解读有误。

加了else 之后,总会对结果取 1 或 0.

2、 count函数都会对不管1 或 0 进行统计。

3、 当加了else 0 之后,可以通过sum函数进行统计。

也可以这样写

select b.corporateOrgName, b.corporateOrgGuid companyId,
sum(case when bc.ftype not in(1,2) then 1 else 0 end ) total,
sum(case when bc.ftype in(3,4,5) then 1 else 0 end ) usetotal,
sum(case when bc.ftype = 6 then 1 else 0 end ) saveTotal,
sum(case when bc.ftype = 7 then 1 else 0 end ) returnTotal
from B_seal_cycle bc
join B_seal b
on bc.sealId = b.id
where b.corporateOrgName like '%%'
group by b.corporateOrgName,b.corporateOrgGuid

有问题,或者有更好的写法,感谢留言指出。

补充知识:SQL语言中 执行语句 DESC与DESCRIBE有什么区别?

DESCRIBE TABLE 用于列出指定表或视图中的所有列。

DESCRIBE INDEX FOR TABLE 用于列出指定表的所有索引,

所以 DESCRIBE是用来显示数据结构信息的;

而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序。

DESCRIBE 是 SHOW COLUMNS FROM 的缩写。

DESCRIBE 提供有关一个表的列信息。col_name 可以是一个列名或是一个包含 SQL 通配符字符 “%” 和 “_” 的字符串。没有必要用引号包围字符串。

一、describe命令用于查看特定表的详细设计信息

例如为了查看guestbook表的设计信息,可用:

describe guestbook describe ol_user userid

二、可通过”show comnus”来查看数据库中表的列名

有两种使用方式:

show columns form 表名 from 数据库名

或者:

show columns from 数据库名.表名

三、用describe命令查询具体列的信息

describe guestbook id 就是查询guestbook中id字段的列信息

{DESCRIBE | 
DESC
} tbl_name [col_name | wild]

DESCRIBE 是 SHOW COLUMNS FROM 的缩写。

DESCRIBE 提供有关一个表的列信息。col_name 可以是一个列名或是一个包含 SQL 通配符字符 “%” 和 “_” 的字符串。没有必要用引号包围字符串。

mysql> 
desc
ol_user username\G

四、判断字段是否存在

mysql_connect(
'localhost'  
,   
'root'  
,   
'root'   
);
   
mysql_select_db(   
'demo'   
); 
$test = mysql_query(
'Describe cdb_posts first'
); 
$test = mysql_fetch_array($test);

$test[0]返回的是该字段的名称,比如我要查询first字段,返回的就是first

如果此字段不存在返回的就是NULL,通过这样可以判断一个字段是否存在

以上这篇在SQL中对同一个字段不同值,进行数据统计操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql LOAD语句批量录入数据

    mysql LOAD语句批量录入数据

    本章的前面讨论如何使用SQL向一个表中插入数据。但是,如果你需要向一个表中添加许多条记录,使用SQL语句输入数据是很不方便的。
    2010-03-03
  • 一篇文章读懂什么是MySQL索引下推(ICP)

    一篇文章读懂什么是MySQL索引下推(ICP)

    当MySQL使用一个索引来检索表中的行时,可以使用ICP作为一种优化方案,下面这篇文章主要给大家介绍了如何通过一篇文章读懂什么是MySQL索引下推(ICP)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 详解MySQL主键唯一键重复插入解决方法

    详解MySQL主键唯一键重复插入解决方法

    我们插入数据的时候,有可能碰到重复数据插入的问题,那么MySQL主键唯一键重复插入如何解决,本文就详细的来介绍一下,感兴趣的可以了解一下
    2021-09-09
  • MySQL5.6与5.7版本区别有多大

    MySQL5.6与5.7版本区别有多大

    MySQL是一种关系型数据库管理系统,最常用的版本是5.6和5.7,mysql5.7是5.6的新版本,在没有减少功能的情况下新增了功能与进行了优化,例如新增了新的优化器、原生JSON支持、多源复制,还优化了整体的性能、GIS空间扩展、InnoDB...
    2024-03-03
  • SQL Server COALESCE函数详解及实例

    SQL Server COALESCE函数详解及实例

    这篇文章主要介绍了SQL Server COALESCE函数详解及实例的相关资料,COALESCE函数比ISNULL更加强大,这个函数的确非常有用,需要的朋友可以参考下
    2016-12-12
  • SQL数据库十四种案例介绍

    SQL数据库十四种案例介绍

    大家好,本篇文章主要讲的是SQL数据库十四种案例介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • MySQL对JSON类型字段数据进行提取和查询的实现

    MySQL对JSON类型字段数据进行提取和查询的实现

    本文主要介绍了MySQL对JSON类型字段数据进行提取和查询的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Mysql数据库增量备份的思路和方法

    Mysql数据库增量备份的思路和方法

    MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可,下面小编给大家分享Mysql数据库增量备份的思路详解,一起看看吧
    2017-09-09
  • mysql 5.0.45 (修改)拒绝服务漏洞

    mysql 5.0.45 (修改)拒绝服务漏洞

    mysql 5.0.45 (修改)拒绝服务漏洞的方法,追求安全的朋友可以参考下。
    2010-07-07
  • MySQL 常见的数据表设计误区汇总

    MySQL 常见的数据表设计误区汇总

    虽然会有一些常规意义上的数据表错误设计和优秀设计原则,但是同样也会有 MySQL 特定的一些情况,这会导致我们犯一些 MySQL 特定的错误。本篇讨论常见的设计误区。
    2021-06-06

最新评论