2

これは簡単な質問ですが、答えが見つかりません。

私のシナリオでは、アプリがあり、ユーザーはそれをダウンロードしており、データベースはユーザー ID、ダウンロードした週、およびダウンロードしたバージョンをキャプチャします。

これは私のテーブル構造です

downld_time| downld_version| usr_id
00           0.5             A
00           0.5             B
00           0.5             C
 2           1               E
 2           1               F
 3           1.2             F
 4           1.2             E
 5           1.2             A

このクエリを使用して、アプリをダウンロードしたユーザーの数を簡単に見つけることができます

SELECT COUNT(DISTINCT usr_id)
FROM download
WHERE 1

ここで私の質問は、5 週目にダウンロードした新規ユーザーの数を掘り下げて確認したい場合、ユーザー A が 0 週目に既にアプリをダウンロードしており、新規ユーザーではないため、カウントを 0 にする必要があるということです。

また、ユーザー A が最初にアプリをダウンロードしたのは何週目かを知る必要があります。

SELECT COUNT(DISTINCT usr_id)
FROM download
WHERE `downld_time`=5

上記のクエリに何を追加する必要がありますか。

4

2 に答える 2

1

これを試して、5 週目に初めてアプリをダウンロードしたユーザーを見つけます。

SELECT COUNT(DISTINCT usr_id)
FROM download
WHERE downld_time=5 and usr_id not in (
    SELECT usr_id
    FROM download
    WHERE downld_time < 5
)

ユーザー A がアプリをダウンロードした最初の週を見つけるには:

SELECT MIN(downld_time) where usr_id='A'
于 2013-07-25T00:28:37.727 に答える
0

特定の週の新規ユーザー数を調べるには、次を使用できます-

SELECT COUNT(DISTINCT `d1`.`usr_id`)
FROM `download` `d1`
LEFT JOIN `download` `d2`
    ON `d1`.`usr_id` = `d2`.`usr_id`
    AND `d1`.`downld_time` > `d2`.`downld_time`
WHERE `d1`.`downld_time` = 5
AND `d2`.`usr_id` IS NULL

ここでの考え方は、usr がテーブルに以前のエントリを持っていない usr_id に基づいて、ダウンロード テーブルをそれ自体に結合することです。

于 2013-07-25T00:28:01.183 に答える