0

这是我的查询:

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 呢?

4

2 回答 2

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

应该这样做

于 2012-11-13T00:05:43.493 回答
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;
于 2012-11-13T00:05:46.827 回答