sql 需求总结

本文通过SQL脚本统计了指定时间段内本地APP的数量及其使用频率,并对闹钟设定的时间进行了详细的区间划分及统计,旨在了解用户的日常使用习惯。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-  需求一:统计本地app数量-------------------------------------------------------------------------
--ruleid_stat.sq;
drop table if exists liangde_com.native_ruleid_stat_0101_0130_re;
create table if not exists liangde_com.native_ruleid_stat_0101_0130_re as 
select 
	rule_id,
	count(*) as ruleid_freq
from kpi_team.daily_utterance_report
where language_code='zh-CN'
and yyyymmdd between 20180101 and 20180130
and
(execute_app like "%相册%" 
or execute_app like "%通讯录%" 
or execute_app like "%打电话%" 
or execute_app like "%设置%" 
or execute_app like "%信息%" 
or  execute_app like "%相机%" 
or execute_app like "%提醒%" 
or execute_app like "%时钟%"  
or execute_app like "%计算器%" 
or execute_app like "%日历%" 
or execute_app like "%网页%" 
or execute_app like  "%智能视觉%" 
or execute_app like  "%通知%" 
or execute_app like  "%多窗口%"
or execute_app like  "%最近%" 
or execute_app like  "%共享%" 
or execute_app like  "%智能视觉%" 
or execute_app like  "%比特币家%" 
or execute_app like  "%比特币声音%" 
or execute_app like  "%全局操作%"
or execute_app like  "%邮箱%" )
and rule_id is not NULL
group by rule_id 
order by ruleid_freq desc 
limit 2000000
------------------------------------------------------------------------------------
--app_stat.sq;
drop table if exists liangde_com.native_app_stat_0101_0130;
create table if not exists liangde_com.native_app_stat_0101_0130 as 
select 
	execute_app ,
	count(*) as app_freq
from kpi_team.daily_utterance_report
where language_code='zh-CN'
and yyyymmdd between 20180101 and 20180130
and
(execute_app like "%相册%" 
or execute_app like "%通讯录%" 
or execute_app like "%打电话%" 
or execute_app like "%设置%" 
or execute_app like "%信息%" 
or  execute_app like "%相机%" 
or execute_app like "%提醒%" 
or execute_app like "%时钟%"  
or execute_app like "%计算器%" 
or execute_app like "%日历%" 
or execute_app like "%网页%" 
or execute_app like  "%智能视觉%" 
or execute_app like  "%通知%" 
or execute_app like  "%多窗口%"
or execute_app like  "%最近%" 
or execute_app like  "%共享%" 
or execute_app like  "%智能视觉%" 
or execute_app like  "%比特币家%" 
or execute_app like  "%比特币声音%" 
or execute_app like  "%全局操作%"
or execute_app like  "%邮箱%" 
and rule_id != '网页_OpenQnA'
group by execute_app
order by app_freq desc 
limit 200000

需求二

总计 闹钟各地占比 case When 的用法

--------------------------------------------------------------------------------------
07:20的闹钟设定好了
drop table if exists liangde_com.alarm_idhm_0101_0130;
create table if not exists liangde_com.alarm_idhm_0101_0130 as 
SELECT 
		concat(kpi_team.decrypt_bxb(svcid),'_',sid,'_',uid) as single_id,
		kpi_team.decrypt_bxb(svcid) as svcid,
		sid,
		uid,
		nlg_output,
		regexp_extract(nlg_output,'([0-9]+):([0-9]+)', 0) as clock_time,
		regexp_extract(nlg_output,'([0-9]+):([0-9]+)', 1) as clock_hour,
		regexp_extract(nlg_output,'([0-9]+):([0-9]+)', 2) as clock_min,
		yyyymmdd
	from kpi_team.daily_utterance_report 
	where yyyymmdd BETWEEN '20180101' and '20180130'
	and language_code = 'zh-CN'
	and rule_id = 'Clock_1012'
	and nlg_output is not NULL;
	
drop table if exists liangde_com.alarm_idhm_halfh_0101_0130;
create table if not exists liangde_com.alarm_idhm_halfh_0101_0130 as 
SELECT 
	*,
	case 
	when clock_hour == 00 and clock_min between 00 and 30 then 1
	when clock_hour == 00 and clock_min between 31 and 60 then 2
	when clock_hour == 01 and clock_min between 00 and 30 then 3
	when clock_hour == 01 and clock_min between 31 and 60 then 4
	when clock_hour == 02 and clock_min between 00 and 30 then 5
	when clock_hour == 02 and clock_min between 31 and 60 then 6
	when clock_hour == 03 and clock_min between 00 and 30 then 7
	when clock_hour == 03 and clock_min between 31 and 60 then 8
	when clock_hour == 04 and clock_min between 00 and 30 then 9
	when clock_hour == 04 and clock_min between 31 and 60 then 10
	when clock_hour == 05 and clock_min between 00 and 30 then 11
	when clock_hour == 05 and clock_min between 31 and 60 then 12
	when clock_hour == 06 and clock_min between 00 and 30 then 13
	when clock_hour == 06 and clock_min between 31 and 60 then 14
	when clock_hour == 07 and clock_min between 00 and 30 then 15
	when clock_hour == 07 and clock_min between 31 and 60 then 16
	when clock_hour == 08 and clock_min between 00 and 30 then 17
	when clock_hour == 08 and clock_min between 31 and 60 then 18
	when clock_hour == 09 and clock_min between 00 and 30 then 19
	when clock_hour == 09 and clock_min between 31 and 60 then 20
	when clock_hour == 10 and clock_min between 00 and 30 then 21
	when clock_hour == 10 and clock_min between 31 and 60 then 22
	when clock_hour == 11 and clock_min between 00 and 30 then 23
	when clock_hour == 11 and clock_min between 31 and 60 then 24
	when clock_hour == 12 and clock_min between 00 and 30 then 25
	when clock_hour == 12 and clock_min between 31 and 60 then 26
	when clock_hour == 13 and clock_min between 00 and 30 then 27
	when clock_hour == 13 and clock_min between 31 and 60 then 28
	when clock_hour == 14 and clock_min between 00 and 30 then 29
	when clock_hour == 14 and clock_min between 31 and 60 then 30
	when clock_hour == 15 and clock_min between 00 and 30 then 31
	when clock_hour == 15 and clock_min between 31 and 60 then 32
	when clock_hour == 16 and clock_min between 00 and 30 then 33
	when clock_hour == 16 and clock_min between 31 and 60 then 34
	when clock_hour == 17 and clock_min between 00 and 30 then 35
	when clock_hour == 17 and clock_min between 31 and 60 then 36
	when clock_hour == 18 and clock_min between 00 and 30 then 37
	when clock_hour == 18 and clock_min between 31 and 60 then 38
	when clock_hour == 19 and clock_min between 00 and 30 then 39
	when clock_hour == 19 and clock_min between 31 and 60 then 40
	when clock_hour == 20 and clock_min between 00 and 30 then 41
	when clock_hour == 20 and clock_min between 31 and 60 then 42
	when clock_hour == 21 and clock_min between 00 and 30 then 43
	when clock_hour == 21 and clock_min between 31 and 60 then 44
	when clock_hour == 22 and clock_min between 00 and 30 then 45
	when clock_hour == 22 and clock_min between 31 and 60 then 46
	when clock_hour == 23 and clock_min between 00 and 30 then 47
	when clock_hour == 23 and clock_min between 31 and 60 then 48
	end as half_hour_id
from liangde_com.alarm_idhm_0101_0130 
where clock_time != '';
------------------------------------------
drop table if exists liangde_com.halfh_stat_0101_0130;
create table if not exists liangde_com.halfh_stat_0101_0130 as
select 
	half_hour_id,
	count(*) as freq
	from liangde_com.alarm_idhm_halfh_0101_0130
where half_hour_id is not null
group by half_hour_id
order by half_hour_id asc
limit 100;



-----------------------------------------------------------------------------按块统计--------------------------------------------------------------------------
drop table if exists liangde_com.alarm_idhm_block_0101_0130;
create table if not exists liangde_com.alarm_idhm_block_0101_0130 as 
SELECT 
	*,
	case 
	when clock_hour >= 00 and clock_hour < 05 then 1
	when clock_hour >= 05 and clock_hour < 08 then 2
	when clock_hour >= 08 and clock_hour < 11 then 3
	when clock_hour >= 11 and clock_hour < 13 then 4
	when clock_hour >= 13 and clock_hour < 17 then 5
	when clock_hour >= 17 and clock_hour < 19 then 6
	when clock_hour >= 19 and clock_hour < 20 then 7
	when clock_hour >= 20 and clock_hour < 24 then 8
	end as half_hour_id
from liangde_com.alarm_idhm_0101_0130 
where clock_time != '';




drop table if exists liangde_com.block_stat_0101_0130;
create table if not exists liangde_com.block_stat_0101_0130 as
select 
	half_hour_id,
	count(*) as freq
	from liangde_com.alarm_idhm_block_0101_0130
where half_hour_id is not null
group by half_hour_id
order by half_hour_id asc
limit 100;












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值