雨不停,天气晴 2022-03-23 14:40 采纳率: 42.9%
浏览 29
已结题

hql语句的优化,广告方面的计算 hive hql 数据库

这个是根据如下表写的,计算出不同广告主的广告的点击率 展示,点击

CREATE TABLE ODS_GG_QL(
`ID` string COMMENT 'ID',
`USER_ID` string COMMENT '用户账号',
`DEVIICE_ID` string COMMENT '设备id',
`create_time` string COMMENT '时间',
`APP_ID` string COMMENT 'APPID',
`ADSPACE_CODE` string COMMENt '广告位',
`MATE_CODE` string COMMENT '广告素材编码',
`operate_type` string COMMENT '交互',
`source` string COMMENT '来源',
`IP` string COMMENT 'IP',
`ADS_CODE` string COMMENT '所属广告主',
`SHOW_TIME` string COMMENT '展示时间'
);
语句如下(怎么优化?)
```sql
create table ggz_yhxw
as 
select t1.c1,t2.c2,t3.c3
from
(select count(*) c1 from ods_gg_ql where operate_type='show' and create_time ='2022-02-19' group by ADS_CODe) t1,
(select count(*) c2 from ods_gg_ql where operate_type='clic' and create_time ='2022-02-19' group by ADS_CODe) t2,
(select
onefh.a1/oneqq.b1 c3
from
(select count(*)b1 from ods_gg_ql where operate_type='show' and create_time ='2022-02-19' group by ADS_CODe) as oneqq,
(select count(*)a1 from ods_gg_ql where operate_type='clic' and create_time ='2022-02-19' group by ADS_CODe) as onefh) t3;

  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-03-23 15:36
    关注
    1. 首先,你这个代码本身应该存在问题,t1/t2/t3输出的数据不止一行,因为有"group by ADS_CODe",但你并没有写任何关联条件,这样会导致产生笛卡尔积,数据结果记录翻倍。
    2. 然后,要优化这个sql,很明显你这都是查的同一个表,而且聚合的维度一样,那么完全可以只用查一次,把不同的查询条件放到count里用case when 处理
      select ADS_CODe,
      count( case when operate_type='show' then 1 end ) c1,
      count( case when operate_type='clic' then 1 end ) c2,
      count( case when operate_type='clic' then 1 end )/count( case when operate_type='show' then 1 end ) c3
      from ods_gg_ql where  create_time ='2022-02-19' group by ADS_CODe
      
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥150 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装