하 이브 실천 (2)

2750 단어 빅 데이터
임무 1: 전국 각 성 (성, 자치구, 직할시, 특별행정구 등 성급 행정구) 웨 이 보 등록 사용자 의 비율.설명: '비례' 는 모두 백분 수 를 사용 하고 소수점 뒤의 2 자리 까지 정확 하 다. 예 를 들 어 23.45% 이다.
select province, count(*) from `user` group by province; 

select count(*) from `user`; 

설명: 아래 문장의 round (d, n) 는 double 형식의 d 숫자 를 n 자리 작은 숫자 로 유지 합 니 다.
select p.province, round(p.puser / u.totaluser, 4) from 
(select count(*) as puser from `user` group by province) p, 
(select count(*) as totaluser from `user`) u; 

마지막 문장:
select t2.provincename, concat(round(t1.rate * 100, 2),'%')
from (select p.province, p.puser / u.totaluser as rate 
from (select province, count(*) as puser from `user` group by province) p, 
(select count(*) as totaluser from `user`) u order by rate desc) t1 
join provinces t2 on  t1.province=t2.province; 

미 션 2: 밤 (20: 00 - 24: 00) 에 웨 이 보 를 보 내 는 사용자 비율 을 좋아 합 니 다.설명: 만약 에 한 사용자 가 밤 에 웨 이 보 를 보 내 는 수량 이 다른 시간의 웨 이 보 수량 보다 많 으 면 그 / 그녀 는 밤 에 웨 이 보 를 보 내 는 것 을 좋아한다 고 정의 한다.
총 미약 한 사용자 수:
select count(distinct uid) from weekly; 
 
select count(*) from weekly group by uid, 
(hour(created_at) >=20 or hour(created_at) <= 24) as h; 
 
select count(*) from weekly where hour(created_at) >=20 or 
hour(created_at) <= 24; 
 
select a.cnt / b.cnt from (select count(*) as cnt from 
weekly where hour(created_at) >=20 or hour(created_at) <= 
24) a, (select count(*) as cnt from weekly) b; 

퀘 스 트 3: 대 V 사용자 의 남녀 성 비.설명: V 는 '인 증 된' 의 약칭, 즉 'userdata. csv' 파일 의 verified 필드 입 니 다.
select gender, count(*) from `user` where verified=true 
group by verified, gender; 
 
select a.cnt from (select gender, count(*) as cnt from 
`user` where verified=true group by verified, gender) a 
where a.gender='f' ;
 
select a.cnt from (select gender, count(*) as cnt from 
`user` where verified=true group by verified, gender) a 
where a.gender='m' ;
 
select count(*) from `user` where verified=true; 
 
select round(f.cnt / c.cnt, 4), round(m.cnt / c.cnt, 4) 
from  
(select a.cnt as cnt from (select gender, count(*) as cnt 
 from `user` where verified=true  group by verified, 
gender) a 
 where a.gender='f') f, 
(select a.cnt as cnt from (select gender, count(*) as cnt  
from `user` where verified=true group by verified, gender) 
a  
where a.gender='m') m, 
(select count(*) as cnt from `user` where verified=true) c; 

작업 4: 가장 주 목 받 는 상위 5 명의 사용자 ID.설명: 총 리 트 윗 수가 많은 사용 자 는 더욱 주 목 받 는 사용자 로 정의 합 니 다.
select retweeted_uid, count(*) as cnt from weekly where 
retweeted_uid !=''  group by retweeted_uid order by cnt 
desc limit 5;

좋은 웹페이지 즐겨찾기