这是我的疑问:
select COUNT(*) as total, COUNT(distinct user) as unique
FROM table
WHERE uristem in ('/example/', '/example/', '/example/', '/example/')
and time > DATE_SUB(NOW(), INTERVAL 24 HOUR)'
group by uristem;
应该是这样的
100 50
25 50
0 0
100 35
但如果没有计数,它看起来像这样(缺少)
100 50
40 50
100 35
如何填写0代替?
答案 0 :(得分:1)
如果你没有带有uri词干的表,那么就像
那样难看Select
u.uristem,
count(t.uristem),
count(distinct t.user) as unique
From (
Select '/example1/' As uristem
Union All Select '/example2/'
Union All Select '/example3/'
Union All Select '/example4/'
) u
Left Outer Join
table t
On u.uristem = t.uristem And
t.time > Date_Sub(Now(), Interval 24 Hour)
Group By
u.uristem
应该这样做
答案 1 :(得分:1)
试试这个(未经测试):
select COUNT(t.uristem) as total
, COUNT(distinct t.user) as unique
FROM
(
select uristem, user
from table
where time > DATE_SUB(NOW(), INTERVAL 24 HOUR)
) t
right outer join
(
select '/example/' x
union select '/example/'
union select '/example/'
union select '/example/'
) y
on t.uristem = y.x
group by y.x;