这篇文章主要为大家详细介绍了解决在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
在SQL中对同一个字段不同值,进行数据统计操作
逻辑上通了,可就是怎么都得不到理想的接口,这样写统计的每一个数据都一样呀。改变之后的正确写法
代码如下:
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
在SQL中对同一个字段不同值,进行数据统计操作
你看出不同之处了嘛? 把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中对同一个字段不同值,进行数据统计操作
有问题,或者有更好的写法,感谢留言指出。
DESCRIBE TABLE 用于列出指定表或视图中的所有列。
DESCRIBE INDEX FOR TABLE 用于列出指定表的所有索引,
所以 DESCRIBE是用来显示数据结构信息的;
而desc是descend ,是用于查询出结果时候对结果进行排序,是降序排序。
DESCRIBE 是 SHOW COLUMNS FROM 的缩写。
DESCRIBE 提供有关一个表的列信息。col_name 可以是一个列名或是一个包含 SQL 通配符字符 “%” 和 “_” 的字符串。没有必要用引号包围字符串。
例如为了查看guestbook表的设计信息,可用:
describe guestbook describe ol_user userid
有两种使用方式:
show columns form 表名 from 数据库名
或者:
show columns from 数据库名.表名
describe guestbook id 就是查询guestbook中id字段的列信息
代码如下:
{DESCRIBE |
DESC
} tbl_name [col_name | wild]
在SQL中对同一个字段不同值,进行数据统计操作
DESCRIBE 是 SHOW COLUMNS FROM 的缩写。
DESCRIBE 提供有关一个表的列信息。col_name 可以是一个列名或是一个包含 SQL 通配符字符 “%” 和 “_” 的字符串。没有必要用引号包围字符串。
代码如下:
mysql>
desc
ol_user username\G
在SQL中对同一个字段不同值,进行数据统计操作
代码如下:
mysql_connect(
'localhost'
,
'root'
,
'root'
);
mysql_select_db(
'demo'
);
$test = mysql_query(
'Describe cdb_posts first'
);
$test = mysql_fetch_array($test);
在SQL中对同一个字段不同值,进行数据统计操作
$test[0]返回的是该字段的名称,比如我要查询first字段,返回的就是first
如果此字段不存在返回的就是NULL,通过这样可以判断一个字段是否存在
以上这篇在SQL中对同一个字段不同值,进行数据统计操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持四海网。
本文来自:http://www.q1010.com/177/19555-0.html
注:关于解决在SQL中对同一个字段不同值,进行数据统计操作的问题的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。