Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1233125
  • 博文数量: 135
  • 博客积分: 10576
  • 博客等级: 上将
  • 技术积分: 1670
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-11 20:49
个人简介

不疯魔,不成活! --疯魔老杨(Crazy.LaoYang) http://www.inotes.cn/

文章分类

全部博文(135)

文章存档

2014年(4)

2012年(13)

2011年(5)

2010年(30)

2009年(56)

2008年(27)

分类: Mysql/postgreSQL

2010-03-17 21:01:18

Mysql查询例1
(源自:杨志刚 博客 老杨博客 http://yangzhigang.cublog.cn
 
本文仅仅是在实际工作中需求(分析WMS日志)的一个简化例子。
 
// 数据库(log),表(table1),表数据为:
mysql> select * from log.table1;
+----------------+-------------+------------+
| c_ip           | cs_uri_stem | c_playerid |
+----------------+-------------+------------+
| 192.168.12.100 | a.wmv       | A          |
| 192.168.12.100 | a.wmv       | A          |
| 192.168.12.100 | a.wmv       | A          |
| 192.168.12.100 | b.wmv       | B          |
| 192.168.12.111 | b.wmv       | C          |
| 192.168.12.111 | b.wmv       | D          |
+----------------+-------------+------------+
表描述:
c_ip:代表浏览视频的客户机IP地址;
cs_uri_stem:代表用户所看视频的文件名;
c_playerid:代表用户看视频所产生的ID号(同一IP看同一文件的ID可能相同,同一用户看不同视频的ID不可能相同,不同用户看不同视频ID也不可能相同;
//需求:统计cs_uri_stem有几种数据可能,每种可能值c_playerid有值的个数。
(预期:有a.wmv和b.wmv两种值,a.wmv的c_playerid有一个值[A],b.wmv的c_playerid有三个值[B,C,D])
mysql> select cs_uri_stem,count(distinct c_playerid) from log.table1 group by cs_uri_stem;
+-------------+----------------------------+
| cs_uri_stem | count(distinct c_playerid) |
+-------------+----------------------------+
| a.wmv       |                          1 |
| b.wmv       |                          3 |
+-------------+----------------------------+
2 rows in set (0.00 sec)
 
按个数由多到少排序
mysql> select cs_uri_stem,count(distinct c_playerid) from log.table1 group by cs_uri_stem order by count(distinct c_playerid) desc;
+-------------+----------------------------+
| cs_uri_stem | count(distinct c_playerid) |
+-------------+----------------------------+
| b.wmv       |                          3 |
| a.wmv       |                          1 |
+-------------+----------------------------+
2 rows in set (0.00 sec)
 
简化表格,并取最大值
mysql> select cs_uri_stem,count(distinct c_playerid) as playeridnum from log.table1 group by cs_uri_stem order by  playeridnum desc limit 1;
+-------------+-------------+
| cs_uri_stem | playeridnum |
+-------------+-------------+
| b.wmv       |           3 |
+-------------+-------------+
1 row in set (0.00 sec)
 
同样可以统计一下每个WMV文件被多少个用户(c_ip)浏览过。
mysql> select cs_uri_stem,count(distinct c_ip) as c_ip_num from log.table1 group by cs_uri_stem order by c_ip_num desc ;
+-------------+----------+
| cs_uri_stem | c_ip_num |
+-------------+----------+
| b.wmv       |        2 |
| a.wmv       |        1 |
+-------------+----------+
2 rows in set (0.00 sec)
 
对视频文件(cs_uri_stem)分类统计,查出每个视频文件被播放的次数以及每个视频被多少个用户浏览过,显示在一张表中。
mysql> select cs_uri_stem,count(distinct c_playerid) as playeridnum,count(distinct c_ip) as c_ip_num from log.table1 group by cs_uri_stem order by c_ip_num desc ;
+-------------+-------------+----------+
| cs_uri_stem | playeridnum | c_ip_num |
+-------------+-------------+----------+
| b.wmv       |           3 |        2 |
| a.wmv       |           1 |        1 |
+-------------+-------------+----------+
2 rows in set (0.00 sec)
 
结果显示b.wmv的播放次大于播放人数,说明有人多次看过此视频。
阅读(2688) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~