关于怎么统计出2天不同企业的独立IP总数和pv
目前的表结构
表:pv
字段id,ip,date_time,cname入库是这样的。主要页面点击一次,数据库就插入一条数据数据如下
结果1:
1  127.0.0.1  2000-1-1,企业1
2  127.0.0.1  2000-1-1,企业1
3  127.0.0.2  2000-1-2,企业1
4  127.0.0.1  2000-1-2,企业1
5  127.0.0.3  2000-1-3,企业2
6  127.0.0.3  2000-1-3,企业2
我希望得到的结果是查询日期2000-1-1至2000-1-3根据企业统计得到pv总数,和IP独立数 ,一天之内的同样IP算1个,ID为1,2的IP为1个,3为1个,4IP是第二天所以也算一个得到应该是3,请问根据这样写企业名称  pv  ip
企业1    4     3
企业2    2     1目前我的sql语句是这样写的。但是
select  count(id) as pvcount,COUNT(DISTINCT(ip)) as countip  from pv where date between '2000-1-1' and '2000-1-3' group by cname
我这样得到的结果值,
结果2
企业名称  pv  ip
企业1    4     2   
企业2    2     1
我希望得到的数据是结果1,而不是结果2,因为结果2是把所有天数IP,然后进行不是重复的值进行求总的。
请大侠求助我想得到结果1Sql语句怎么写呢

解决方案 »

  1.   

    关于怎么统计出2天不同企业的独立IP总数和pv
    目前的表结构
    表:pv
    字段id,ip,date_time,cname入库是这样的。主要页面点击一次,数据库就插入一条数据数据结构如下1  127.0.0.1  2000-1-1,企业1
    2  127.0.0.1  2000-1-1,企业1
    3  127.0.0.2  2000-1-2,企业1
    4  127.0.0.1  2000-1-2,企业1
    5  127.0.0.3  2000-1-3,企业2
    6  127.0.0.3  2000-1-3,企业2
    我希望得到的结果是查询日期2000-1-1至2000-1-3根据企业统计得到pv总数,和IP独立数 ,一天之内的同样IP算1个,ID为1,2的IP为1个,3为1个,4IP是第二天所以也算一个得到应该是3,请问根据这样写
    结果1:也是我希望要展示的结果
    企业名称  pv  ip
    企业1    4     3
    企业2    2     1目前我的sql语句是这样写的。但是
    select  count(id) as pvcount,COUNT(DISTINCT(ip)) as countip  from pv where date between '2000-1-1' and '2000-1-3' group by cname
    我这样得到的结果值,
    结果2
    企业名称  pv  ip
    企业1    4     2   
    企业2    2     1
    我希望得到的数据是结果1,而不是结果2,因为结果2是把所有天数IP,然后进行不是重复的值进行求总的。
    请大侠求助我想得到结果1Sql语句怎么写呢
      

  2.   

    select cname `企业名称` ,sum(pvcount) pvcount ,sum(countip) ip from (select cname, count(id) as pvcount,COUNT(DISTINCT(ip)) as countip from tt where date_time between '2000-1-1' and '2000-1-3' group by cname,date_time) t group by cname;
    +--------------+---------+------+
    | 企业名称     | pvcount | ip   |
    +--------------+---------+------+
    | 企业1        |       4 |    3 |
    | 企业2        |       2 |    1 |
    +--------------+---------+------+
    2 rows in set (0.00 sec)
      

  3.   

    Select  cname,count(*) as pv,count(distinct ip,date) as ip
    From pv
    Group by cname