一个有趣的SQL问题。
2008-04-27 09:25
495 查看
有朋友近来要我帮忙解决一个问题,问题描述:
有表,表有3个字段:f1,f2,f3,其中,每个字段中都可能出现1~9之间的9个数字,现要统计出整个表中1~9各出现的次数。
如:
F1
F2
F3
1
1
2
1
2
3
2
1
2
在上例中:”1”出现了4次,”2”出现了4次,”3”出现了1次。
当然,这个问题是要求尽可能的用SQL语句来搞定。因为如果用程序,用变量、数组之类,好象就没有提出这个问题的必要。当俺花了几分钟的心思,OVER之后,感觉到用SQL来考虑这个问题,好象就有了点意思,怎样用最简单明了的思路和方法将这个问题搞定?在此将这个问题和大家分享,希望能让大家工作、忙碌之余,换换心境,能换来一点小小的乐趣。
在此将我的解决方法公布如下:
SELECTA1,COUNT(A1)ASExpr1
FROM(SELECTA1FROMTEST
UNIONALL
SELECTA2FROMTEST
UNIONALL
SELECTA3FROMTEST
)
GROUPBYA1
我是故意将字体颜色设置为白色,是为避免干扰您的思维,如果你想看,可用鼠标拖动,选择上面那块空白区域,将内容粘贴到写字板或查询分析器中即可。该SQL在SQLSERVER2000下调试通过。
有表,表有3个字段:f1,f2,f3,其中,每个字段中都可能出现1~9之间的9个数字,现要统计出整个表中1~9各出现的次数。
如:
F1
F2
F3
1
1
2
1
2
3
2
1
2
在上例中:”1”出现了4次,”2”出现了4次,”3”出现了1次。
当然,这个问题是要求尽可能的用SQL语句来搞定。因为如果用程序,用变量、数组之类,好象就没有提出这个问题的必要。当俺花了几分钟的心思,OVER之后,感觉到用SQL来考虑这个问题,好象就有了点意思,怎样用最简单明了的思路和方法将这个问题搞定?在此将这个问题和大家分享,希望能让大家工作、忙碌之余,换换心境,能换来一点小小的乐趣。
在此将我的解决方法公布如下:
SELECTA1,COUNT(A1)ASExpr1
FROM(SELECTA1FROMTEST
UNIONALL
SELECTA2FROMTEST
UNIONALL
SELECTA3FROMTEST
)
GROUPBYA1
我是故意将字体颜色设置为白色,是为避免干扰您的思维,如果你想看,可用鼠标拖动,选择上面那块空白区域,将内容粘贴到写字板或查询分析器中即可。该SQL在SQLSERVER2000下调试通过。
相关文章推荐
- 一个有趣的SQL问题。
- 一个有趣的SQL问题。
- 一个有趣的sql查询问题
- IO.File 一个有有趣的依赖问题
- Java中一个有趣的问题 BufferedOutputStream
- 关于打印一个有趣的数字图形的问题
- 一个有趣的 SQL 查询(查询7天连续登陆)
- 一个有趣的Java编译问题
- moto List一个有趣的问题
- 关于用sqlserverr创建一个Oracle的连接服务器问题
- 一个sql的问题
- 一个有趣的问题,足球比赛场次安排!
- 一个很有趣的关于线程锁的问题
- 今天发现了一个sql的小问题
- 一个奇怪的SQL问题:case when 在记录不存在时不生效
- C++编程一个有趣的问题,关于基类地址与派生类地址
- LINQ to SQL 基于属性的映射 一个常见问题
- 记一个BASH的contab中sqlplus不执行的问题
- mysql5.7中的一个update order by排名问题解决办法(一条sql搞定排名)
- 今天配置spring-mybites时遇到一个创建不了sqlSessionFactroy的问题