0

したがって、基本的に、ページへの訪問数に関するレポートを生成する必要があります..これが私のテーブルデータであると仮定します。(注: すべてのレコードで日時の値を想定してください)
訪問者 dtime
a
c
b
a
d be 2013-04-31 03:14:29 s 2013-04-01 03:14:29
a 2013-04-01 03 :14:29 b 2013-04-01 03:14:29 b 2013-04-01 03:14:29 c 2013-04-31 03:14:29 c 2nd b 2nd d 3rd d 3rd a 3rd b 4th b













したがって、ユーザーが から選択した場合、1st to 3rd日付 PageLoads Unique Visits First time Visits Returning Visits を出力する必要があります

1st   4   3   1  2

2nd   3   2   0  2

3rd   3   2   0  2

pageloads for 1st are - s a b bunique visits - s a b 問題は初回訪問者を見つけることです。これはs、以前のすべての訪問者と比較した場合にのみ発生します。2 回目の訪問は 0 です。これは、誰も初めて訪問していないためです。

ページロードとユニークな訪問を見つけるための私のクエリは-

select distinct DATE(dtime) as ddate,count(visitors) as ploads, 
count(distinct visitors) as uvisits,
from table1 where  dtime >= '2013-04-1 00:00:01' and dtime <= '2013-04-3 23:59:59'
group by DATE(dtime) order by ddate desc;

各日付の初回訪問を確認するにはどうすればよいですか?

4

2 に答える 2

0

最初に、初回訪問者を返すサブクエリを作成する必要があります。

select visitor,min(dtime) as firstDate from table
group by visitor

これで、訪問者とその最初の訪問日がわかります。

select distinct DATE(dtime) as ddate,
       count(A.visitors) as ploads, 
       count(distinct visitors) as uvisits,
       count(b.visitors) as FirstTime,
       count(a.visitors)-count(b.visitors) as ReturnVisits
from table A
left join (select visitors,min(dtime) as firstDate from table group by visitors) B 
     on b.visitors=a.visitors and b.firstDate = a.dtime
where  dtime >= '2013-04-1 00:00:01' and dtime <= '2013-04-3 23:59:59'
group by DATE(dtime) 
order by ddate desc;

このマシンには mySQL がインストールされていないため、構文エラーはご容赦ください。

于 2013-07-04T10:34:11.650 に答える
0

「s」が初めての場合

合計関数を使用する

sum(ifnull((select visitors from yourtable where dtime<'2013-04-1 00:00:01' ),1,0)) as FirstTime


select DATE(dtime) as ddate,
    count(visitors) as ploads, 
    count(distinct visitors) as uvisits,
    sum(ifnull((select visitors from yourtable where dtime<'2013-04-1 00:00:01' ),1,0)) as FirstTime,
    count(distinct visitors)-
    sum(ifnull((select visitors from yourtable where dtime<'2013-04-1 00:00:01' ),1,0)) as ReturningVisits
from yourtable where dtime >= '2013-04-1 00:00:01' 
and dtime <= '2013-04-3 23:59:59' 
group by DATE(dtime) 
order by ddate desc;
于 2013-07-04T10:21:22.823 に答える