我們有如下的使用者訪問資料
userid visitdate visitcount
u01 2017/1
/215u02 2017/1
/236u03 2017/1
/228u04 2017/1
/203u01 2017/1
/236u01 2017/2
/218u02 2017/1
/236u01 2017/2
/224
要求使用sql統計出每個使用者的累積訪問次數,如下表所示:
使用者id 月份 小計 累積
u01 2017-01
1111
u01 2017-02
1223
u02 2017-01
1212
u03 2017-01
88u04 2017-01
33
資料集
u01 2017/1
/215u02 2017/1
/236u03 2017/1
/228u04 2017/1
/203u01 2017/1
/236u01 2017/2
/218u02 2017/1
/236u01 2017/2
/224
1)建立表
create
table
action
(userid string,
visitdate string,
visitcount int
)row format delimited fields
terminated
by"\t"
;
2)修改資料格式
select userid,
date_format(regexp_replace(visitdate,
"/",
"-")
,'yyyy-mm'
)month
, visitcount
from
action
;
3)計算每人單月訪問量
with a as
(select userid,
date_format(regexp_replace(visitdate,
"/",
"-")
,'yyyy-mm'
)month
, visitcount
from
action
)select userid,
month
,sum
(visitcount) ct
from a group
by userid,
month
;
4)按月累計訪問量
with a as
(select userid,
date_format(regexp_replace(visitdate,
"/",
"-")
,'yyyy-mm'
)month
, visitcount
from
action),
b as
(select userid,
month
,sum
(visitcount) ct
from a
group
by userid,
month
)select userid,
month
, ct,
sum(ct)
over
(distribute by userid sort by
month
)from b;
或者也可以是
select userid,
mn,mn_count,
sum(mn_count)
over
(partition
by userid order
by mn)
from
(select userid,
mn,sum(visitcount) mn_count
from
(select userid,
date_format(regexp_replace(visitdate,
'/',
'-')
,'yyyy-mm'
) mn,
visitcount
from
action
) t1
group
by userid, mn) t2;
執行結果
+
------+
-------
+--+--
+|userid|month |ct|c3|+--
----+--
-----+
--+--+
|u01 |
2017-01
|11|11
||u01 |
2017-02
|12|23
||u02 |
2017-01
|12|12
||u03 |
2017-01
|8|8
||u04 |
2017-01
|3|3
|+------+
-------
+--+--
+
要求使用sql統計出每個使用者的累積訪問次數
1 首先求出每個使用者每月的累計訪問次數
2 同一使用者不同月份的資料進行聚合,即(distribute by userid sort by month)
如果是求每個月不同使用者的累計訪問次數呢?如下
with a as
(select userid,
date_format(regexp_replace(visitdate,
"/",
"-")
,'yyyy-mm'
)month
, visitcount
from
action),
b as
(select userid,
month
,sum
(visitcount) ct
from a
group
by userid,
month
)select
month
, userid,
ct,sum(ct)
over
(distribute by
month sort by userid)
from b;
執行結果如下
+
-------
+------+--
+--+|month |userid|ct|c3|+--
-----+
------+
--+--+
|2017-01
|u01 |11|
11||2017-01
|u02 |12|
23||2017-01
|u03 |8|
31||2017-01
|u04 |3|
34||2017-02
|u01 |12|
12|+--
-----+
------+
--+--+
python利用dict統計每個文字的出現次數
在乙個群裡看到有個群友有個需求 有八門課的名單,每行名單為每門課的名單,想統計每個人選課的次數 資料形式如下 思路 讀取所有名單,利用set集合建立不重複的list,然後建立字典,再利用字典的key對名單進行遍歷 知識點 coding utf 8 author fff zrx filepath te...
mysql統計出每個姓氏的人數 Mysql資料分析
mysql是關係型資料庫,sql語言可以很好地對資料庫進行操作管理,進而進行資料分析。現對使用者消費資料進行初步分析,資料均 於 無涉及使用者隱私資料。一 建立資料庫 建立資料庫基本操作 create database 資料庫名 二 建立表 建立資料庫基本操作 create table 表名 欄位名...
使用hive做單詞統計
1 首先建立乙個檔案單詞的檔案,例如a.txt kk,123,weiwei,123 hlooe,hadoop,hello,ok h,kk,123,weiwei,ok ok,h 2 將檔案上傳到hdfs中 hdfs dfs copyfromlocal a.txt upload wangwei a.tx...