SQL 필수 - 내부 링크

16924 단어 sql
연속 활약
http://dp.pt.xiaomi.com/job/job_details/339836
with intern_t as (--       
select id,brand,modelname,
from_unixtime(cast(lastactivetime/1000 as int),'yyyy-MM-dd') as lastactivetime,
--   !!!    dense rank,  device       ,       ,              
dense_rank() over (partition by id order by lastactivetime desc) as rank
from profile.device_state_accumulator_all
where date <= ${date-1} and date >= ${date-30} --  30 
and from_unixtime(cast(lastactivetime/1000 as int),'yyyyMM') = substr(${date-1},1,6)
and finalCountry="  "
),

not_active_continuous_table as (
select brand,modelname,
(datediff(t1.lastactivetime,t2.lastactivetime)-1) as notactive_continuous_days,
count(distinct t1.id) as not_active_continuous_days_counts
from (select id,brand,modelname,lastactivetime from intern_t where rank=1) t1
inner join (select id,lastactivetime from intern_t where rank=2)t2
on t1.id = t2.id
group by brand,modelname,(datediff(t1.lastactivetime,t2.lastactivetime)-1)
having notactive_continuous_days>=15),

active_days_permonth_table as ( --     x    ()
select brand,modelname,
(from_unixtime(unix_timestamp(cast(${date-1} as string), 'yyyyMMdd'),'dd')-active_days_permonth)as not_active_days_permonth,
count(distinct id) as not_active_counts
from
(select id,brand,modelname,--      -       =         
count(distinct lastactivetime) as active_days_permonth
from intern_t
group by id,brand,modelname) ttt
group by brand,modelname,(from_unixtime(unix_timestamp(cast(${date-1} as string), 'yyyyMMdd'),'dd')-active_days_permonth)
)

insert overwrite table miui_data.sales_newinfo_table partition(date=${date-1})
select not_active_continuous_table.brand as brand,not_active_continuous_table.modelname as modelname,
notactive_continuous_days,not_active_days_permonth,
not_active_continuous_days_counts,not_active_counts
from not_active_continuous_table
full outer join active_days_permonth_table
on not_active_continuous_table.brand = active_days_permonth_table.brand
and not_active_continuous_table.modelname = active_days_permonth_table.modelname

3 일 연속 활약
with t as (--       
select id,
from_unixtime(cast(lastactivetime/1000 as int),'yyyy-MM-dd') as lastactivetime,
--   !!!    dense rank,  device       ,       ,              
dense_rank() over (partition by id order by lastactivetime desc) as rank
from profile.device_state_accumulator_all
where date <= ${date-1} and date >= ${date-30} --  30 
and from_unixtime(cast(lastactivetime/1000 as int),'yyyyMM') = substr(${date-1},1,6)
and finalCountry="  "
)

select t1.id as id
from 
(select * from t) as t1
inner join
(select * from t) as t2
on t1.id = t2.id
where t2.rank - t1.rank = 2
and datediff(t2.date,t1.date) = 2


클래스 중 클래스 교차 비례
현재 두 개의 데이터 가 있 는데, 한 열 은 userid 이 고, 한 열 은 text 이 며, text 데이터 에는 각종 구기 운동 이 있 는데, 예 를 들 어 농구, 축구 등 이다.이 데이터 시트 는 모든 사용자 가 좋아 하 는 구기 운동 이 고 모두 몇 개의 구기 운동 이 있 는 지 모 르 며 모든 구기 운동 에서 각 다른 구기 운동 을 좋아 하 는 사용자 가 차지 하 는 비례 를 구 한 다 는 뜻 이다.예 를 들 어 농 구 를 좋아 하 는 사람 중 에 축 구 를 좋아 하 는 사람 이 얼마나 되 고 배드민턴 을 좋아 하 는 지 이런 교차 비율 은

select text1,text2,count(distinct id) as counts
from
(select t1.id as id,t1.text as text1,t2.text as text2
from
(select id,text from table) t1
inner join
(select id,text from table)t2
on t1.id = t2.id) table
group by text1,text2

좋은 웹페이지 즐겨찾기