2014-02-20 17 views
0

我有一個包含6列的表 - 日期,時間,操作,user_id,通道和time_and_date。 當用戶開始或結束觀看電視頻道時,動作指的是打開或關閉。在系統中查找一次性用戶-sql表

我的任務是如下 獲得數據的概述:

- find the one-time users (who used the service only once or in only one day and 
never came back) for each channel, each genre, each community 

Anoother表提供了USER_ID,流派(新聞,體育....)

我怎樣才能找到一次性用戶對這些要求?

+0

請提供相關表格的DDL語句。 –

+0

是否有不同頻道/流派/社區的用戶被認爲是一次性用戶? –

回答

0

聽起來是這樣的:

select user_id, count(*) 
from action_table 
where action = 'open' 
group by user_id 
having count(*) = 1 
order by user_id 
+0

以及我測試了所有的例子,但沒有正確運行。我將嘗試優化我的問題... 1.表格包含日期,時間,操作,user_id,頻道和time_and_date。當用戶開始或結束觀看電視頻道時,動作指的是打開或關閉。 2.表has-頻道和流派 首先,我嘗試尋找第一個表中的用戶,該用戶總共觀看頻道不超過一次,或者每天只觀看MAX一次。 其次,查找總共觀看一次頻道或每個GENRE的頻道的用戶。 我希望問題更清楚。 – user3277266

0

你可以嘗試像

SELECT FROM first_table LEFT JOIN users ON first_table.user_id=users.id GROUP BY users.id HAVING COUNT(users.id)=1

您可以加入後您的類別表選擇了風格渠道...

0

要獲得一次性用戶:

select user_id ,min(channel) as channel, min(genre) as genre, min(community) as community 
from action_table 
group by user_id 
having min(date) = max(date); 

請注意having子句。這保證了用戶只有一個日期(但不一定是一個記錄)。

這將爲三個維度中的每一個返回一個值 - 對於一次性用戶,它們是相同的。對於一天中多次訪問的人,它會選擇一個值。