ITPUB??ì3
新一届的微软MVP评选已经开始,欢迎各位推荐!
ITPUB论坛 » MySQL及其它开源数据库 » 一条对表统计的SQL语句

标题: [笔记] 一条对表统计的SQL语句
离线 ealpha
初级会员



精华贴数 0
个人空间 0
技术积分 18 (57785)
社区积分 0 (259121)
注册日期 2005-1-25
论坛徽章:0
      
      

发表于 2008-4-10 15:52 
一条对表统计的SQL语句

有一张表table1 结构如下.
table1:
username    action   
--------------------------------
A                   CALL      
A                   SEARCH
A                   SEARCH
B                   CALL      
B                   SEARCH
A                   SEARCH
A                   VIDEO
B                   SEARCH
B                   VIDEO
A                   CALL  
B                   VIDEO
--------------------------------
通过一条SQL语句得出下列统计数据:
table2
username   CALL_TIMES       SEARCH_TIMES      VIDEO_TIMES
-------------------------------------------------------------------------------
A                     2                        3                              1
B                     1                        2                              2
-------------------------------------------------------------------------------
说明:
table.action 中所有可能的值都已知的,只有 CALL , SEARCH ,VIDEO 和 table2 的字段一一对应
table1 中目前数据50W条。
有没有效率较高的SQL语句?


只看该作者    顶部
离线 jinguanding
Eugene


来自 上海
精华贴数 1
个人空间 70
技术积分 2401 (654)
社区积分 79 (3901)
注册日期 2007-3-29
论坛徽章:5
现任管理团队成员2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:柔道生肖徽章2007版:鼠ITPUB新首页上线纪念徽章 
      

发表于 2008-4-10 17:28 
SELECT username,SUM(CASE `action` WHEN 'CALL' THEN 1  ELSE 0 END )AS CALL_TIME,
       SUM(CASE `action` WHEN 'SEARCH' THEN 1 ELSE 0 END )AS SEARCH_TIMES,
       SUM(CASE `action` WHEN 'VIDEO' THEN 1 ELSE 0 END )AS VIDEO_TIMES
FROM eugene
GROUP BY username


__________________
.....做人做事尽心尽力,做学问谦虚求根问底.......
......***寻MySQL方面的兼职***......
.....专业的综合布线、安防公司........................
......www.showgold.cn..............................
......上海亮金信息技术有限公司.......................
只看该作者    顶部
离线 jinguanding
Eugene


来自 上海
精华贴数 1
个人空间 70
技术积分 2401 (654)
社区积分 79 (3901)
注册日期 2007-3-29
论坛徽章:5
现任管理团队成员2008北京奥运纪念徽章:乒乓球2008北京奥运纪念徽章:柔道生肖徽章2007版:鼠ITPUB新首页上线纪念徽章 
      

发表于 2008-4-10 17:29 
一条SQL语句只有行列转换了......
把sort_buffer调大点.....是MyISAM引擎的话

[ 本帖最后由 jinguanding 于 2008-4-10 17:31 编辑 ]


__________________
.....做人做事尽心尽力,做学问谦虚求根问底.......
......***寻MySQL方面的兼职***......
.....专业的综合布线、安防公司........................
......www.showgold.cn..............................
......上海亮金信息技术有限公司.......................
只看该作者    顶部
离线 yueliangdao0608
斑竹
上帝他爸


来自 中国-红灯区-深圳
精华贴数 0
个人空间 0
技术积分 3995 (362)
社区积分 1471 (738)
注册日期 2005-2-25
论坛徽章:20
现任管理团队成员紫蜘蛛玉兔生肖徽章2007版:牛2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:击剑
2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:手球2008北京奥运纪念徽章:自行车 

发表于 2008-4-10 17:30 
大概就是这个样子的

select username, sum((case when action = 'CALL' then 1 else 0 end)) as call_times,
sum((case when action = 'SEARCH' then 1 else 0 end)) as search_times,
sum((case when action = 'VIDEO' then 1 else 0 end)) as video_times
from table1 group by username;


__________________
-------------------------------------------------------
以前搞维护-搞软件-搞网站-现在搞DBA ---
点击这里访问我的技术博客

最近在练习英语中。。。
Losing my face!
只看该作者    顶部
离线 yueliangdao0608
斑竹
上帝他爸


来自 中国-红灯区-深圳
精华贴数 0
个人空间 0
技术积分 3995 (362)
社区积分 1471 (738)
注册日期 2005-2-25
论坛徽章:20
现任管理团队成员紫蜘蛛玉兔生肖徽章2007版:牛2008北京奥运纪念徽章:花样游泳2008北京奥运纪念徽章:击剑
2008北京奥运纪念徽章:足球2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:拳击2008北京奥运纪念徽章:手球2008北京奥运纪念徽章:自行车 

发表于 2008-4-10 17:31 
晕,这么快啊。


__________________
-------------------------------------------------------
以前搞维护-搞软件-搞网站-现在搞DBA ---
点击这里访问我的技术博客

最近在练习英语中。。。
Losing my face!
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问