sql语句,两次分组查询

时间:2022-09-16 12:47:03
SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid` , `date` 

得到的结果是这样的
  
siteid date count( DISTINCT ip ) 
0 2005-03-01 1 
0 2005-03-02 1 
0 2005-03-03 1 
0 2005-03-04 1 
3 2005-03-01 434 
3 2005-03-02 466 
3 2005-03-03 378 

怎样再统计各个siteid 在三月份里的总数。

18 个解决方案

#1


循环相加,当siteid改变时起用新计数器

#2


我也想过这种方法,但是觉得太费时,能不能用一句话解决

#3


试试这个,如果mysql版本不低的话可以
SELECT siteid, sum( a ) 
FROM 
(SELECT siteid, date, count( DISTINCT ip ) a
  FROM rawlogodd
  WHERE `date` >= '2005-3-1'
  AND date <= '2005-3-31'
  GROUP BY `siteid` , `date` 
) b
GROUP BY siteid

#4


再执行一次
SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid`

#5


版本不支持子查询

#6


SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid`

这个不行,只能得到这样的数据
  
siteid date count( DISTINCT ip ) 
0 2005-03-01 1 
3 2005-03-01 2237 

#7



这样出来的结果是不是应该是一样的?

SELECT siteid , date , count( * ) 
FROM rawlogodd
WHERE date >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY siteid , date , ip

#8


SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid` , `date` 
改成
SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid` 


总的就出来了

#9


昏了,不相干

#10


试试这样的结果?

SELECT siteid, date, count( DISTINCT ip, date ) 
FROM t1
WHERE date >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY siteid

#11


不可能的,除非你第一次就错了!!!
不做子分组就是全部了

#12


select siteCount=sum(count(distinct ip)),siteid from table where month([date])=3 and year([date])=2005 group by siteid

#13



SELECT siteid, date, count( DISTINCT ip, date ) 
FROM t1
WHERE date >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY siteid


这个对
:)

可是想不明白count( DISTINCT ip, date ) 

#14


嗯,你的统计先按日分组,同一ip算一次,
实际上就是把同一天同一IP的访问算一次,
然后统计一个月的访问。
所以,distinct ip,date就是这个作用了,

#15


赞!!!!

#16


再请教 sql语句:

现在又多一个条件:就是同一ip每天最多只能访问24个不同的网站,也就是说同一小时访问不同网站只能算一次。

#17


再综合一下这个统计条件。

同一天同一个ip的访问算一次
同一天同一小时同一个ip访问不同的网站,第一个访问的网站有效,其它的视为无效。
统计一个月各个网站的ip访问量

#18


这个group by (ip,日期,小时)不就可以了吗?

#1


循环相加,当siteid改变时起用新计数器

#2


我也想过这种方法,但是觉得太费时,能不能用一句话解决

#3


试试这个,如果mysql版本不低的话可以
SELECT siteid, sum( a ) 
FROM 
(SELECT siteid, date, count( DISTINCT ip ) a
  FROM rawlogodd
  WHERE `date` >= '2005-3-1'
  AND date <= '2005-3-31'
  GROUP BY `siteid` , `date` 
) b
GROUP BY siteid

#4


再执行一次
SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid`

#5


版本不支持子查询

#6


SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid`

这个不行,只能得到这样的数据
  
siteid date count( DISTINCT ip ) 
0 2005-03-01 1 
3 2005-03-01 2237 

#7



这样出来的结果是不是应该是一样的?

SELECT siteid , date , count( * ) 
FROM rawlogodd
WHERE date >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY siteid , date , ip

#8


SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid` , `date` 
改成
SELECT `siteid` , `date` , count( DISTINCT ip ) 
FROM rawlogodd
WHERE `date` >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY `siteid` 


总的就出来了

#9


昏了,不相干

#10


试试这样的结果?

SELECT siteid, date, count( DISTINCT ip, date ) 
FROM t1
WHERE date >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY siteid

#11


不可能的,除非你第一次就错了!!!
不做子分组就是全部了

#12


select siteCount=sum(count(distinct ip)),siteid from table where month([date])=3 and year([date])=2005 group by siteid

#13



SELECT siteid, date, count( DISTINCT ip, date ) 
FROM t1
WHERE date >= '2005-3-1'
AND date <= '2005-3-31'
GROUP BY siteid


这个对
:)

可是想不明白count( DISTINCT ip, date ) 

#14


嗯,你的统计先按日分组,同一ip算一次,
实际上就是把同一天同一IP的访问算一次,
然后统计一个月的访问。
所以,distinct ip,date就是这个作用了,

#15


赞!!!!

#16


再请教 sql语句:

现在又多一个条件:就是同一ip每天最多只能访问24个不同的网站,也就是说同一小时访问不同网站只能算一次。

#17


再综合一下这个统计条件。

同一天同一个ip的访问算一次
同一天同一小时同一个ip访问不同的网站,第一个访问的网站有效,其它的视为无效。
统计一个月各个网站的ip访问量

#18


这个group by (ip,日期,小时)不就可以了吗?