Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

[access查询]【access小品】二指禅--等号的妙用

时 间:2011-10-13 09:36:18
作 者:煮江品茶   ID:10802  城市:武汉
摘 要:等号的妙用
正 文:

  上个世纪八十年代,出了个海灯法师,其二指禅神功轰动一时。有好事者一番调查之后发现,和尚是假和尚,神功是假神功。不过至此以后果真有人苦练,竟然也可用两指倒立起来。科学界实际上也存在一个神秘的二指神功,那就是一个两根手指并成的等号,所有学科的发端,大体皆与这个符号有关。本文打算从Access中的一个小的运用,来揭示等号的高妙功力。

  版友wyj同志问了一个查询的问题,大意是统计某个省份的男女人数,我在查询中用了一个等号进行计算。版主群中聊天时红尘与悟道两同志说这个写法有点意思,于是想可能算是一个小的技巧,便觉得著文细致说道说道。

  假设有下面的这么一个表,想要按单位统计出男女人数。计算的方法有很多,可以分组查询或交叉查询进行计算。

单位        姓名        性别        籍贯        电话
单位1        张1        男        安徽        010-1234
单位2        张2        男        安徽        020-1235
单位3        张3        女        河南        010-1236
单位1        张4        男        河南        020-1237
单位2        张5        女        河南        020-1238
单位2        张6        男        山东        020-1239
单位1        张7        女        山东        010-1240
单位3        张8        男        山东        020-1241
单位1        张9        男        安徽        020-1242
单位1        张10      男        安徽        010-1243

  可以有这么个简单的算法:

select select 单位,-1*sum(性别="男") as 男,-1*sum(性别="女") as 女,count(*) as 总数
from tbname
group by 单位
  
  对初学者来说,猛然一看【性别="男"】有些疑惑,脑海中就在问这是个什么玩意?呵呵,其实很简单,这就是一个逻辑表达式,这个表达式的计算结果只有两个值,要么是-1(True,,表示等式成立),要么是0(False,表示等式不成立)。把所有逻辑值求和得到一个负数,将这个负数进一步计算成正数,就得到了男性的人数合计。

  推而广之,我们可以进一步按照这个思路,进行其他字段的分组计数。比如,可以写如下的SQL语句:

select select 单位,-1*sum(籍贯="安徽") as 安徽,-1*sum(籍贯="河南") as 河南,,-1*sum(籍贯="山东") as 山东,count(*) as 总数
from tbname
group by 单位

select select 单位,-1*sum(left(电话,3)="010") as 区号010,-1*sum(left(电话,3)="020") as 区号020,count(*) as 总数
from tbname
group by 单位

  也可以把所有这些计数查询写在一起,比如:

select select 单位,-1*sum(性别="男") as 男,-1*sum(性别="女") as 女,-1*sum(籍贯="安徽") as 安徽,-1*sum(籍贯="河南") as
河南,,-1*sum(籍贯="山东") as 山东,-1*sum(left(电话,3)="010") as 区号010,-1*sum(left(电话,3)="020") as 区号020,count(*)
as 总数
from tbname
group by 单位

  由此便可以继续想像,等号在这里并不是重要的,也可以是大于号小于号什么的,只要是构成逻辑表达式便可以按照这思路来进行分组的计数统计了。等号在这里就是两个根具有象征意义的手指,它轻轻的推开了一扇窗户,或者是捅破了一层薄纸。于是乎:“你看,多么蓝的天啊,走吧,走过去,你就会溶化在那蓝天里...”



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助