[access查询]【access小品】二指禅--等号的妙用-煮江品茶
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-查询/SQL语句


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

发表时间:2011/10/13 9:36:18 评论(1) 浏览(6072)  评论 | 加入收藏 | 复制
   
摘 要:等号的妙用
正 文:
  上个世纪八十年代,出了个海灯法师,其二指禅神功轰动一时。有好事者一番调查之后发现,和尚是假和尚,神功是假神功。不过至此以后果真有人苦练,竟然也可用两指倒立起来。科学界实际上也存在一个神秘的二指神功,那就是一个两根手指并成的等号,所有学科的发端,大体皆与这个符号有关。本文打算从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群(群号:198465573)
 
 相关文章
Access查询 交流QQ群群号:54525238 欢迎学习acc...  【宏鹏  2012/10/26】
常见问答
技术分类
相关资源
文章搜索
关于作者

煮江品茶

文章分类

文章存档

友情链接