mysql解析sql(含计算)的使用(个人记录)

SELECT DATE(create_date) as 'playDay', 
count(*) as 'playPv', 
count(DISTINCT open_id) as 'playUv', 
count(CASE WHEN play_percentage>=75 THEN open_id END) as 'finishPv', 
count(DISTINCT CASE WHEN play_percentage>=75 THEN open_id END) as 'finishUv',
 round((count(CASE WHEN play_percentage>=75 THEN open_id END)/count(*))*100,2) AS 'finishprv' 

FROM play_info a WHERE a.del_flag = '0' AND 
a.play_duration > 2 AND date_format(a.create_date,'%Y-%m-%d') BETWEEN '2021-02-24' AND '2021-03-02' 
GROUP BY DATE(create_date) limit 20

mysql解析sql(含计算)的使用如图计算结果:

页面展示如图:

数据表的数据如图:

数据表结构:

DROP TABLE IF EXISTS play_info;
-- 播放记录
CREATE TABLE play_info(
  id varchar(64) BINARY NOT NULL comment 'id',
  video_id VARCHAR(64) NOT NULL COMMENT '外键,对应短视频表主键',
  open_id varchar(64)BINARY comment '用户id',
  play_percentage int(10) DEFAULT NULL COMMENT '播放百分比,取值0~100之间',
  duration int(10) DEFAULT NULL COMMENT '总时长',
  play_duration int(10) DEFAULT NULL COMMENT '播放时长',
  invoke_from varchar(64)BINARY comment '来源(播放属性)',
  media_id VARCHAR(64) COMMENT '号主id',
  create_by varchar(64) NOT NULL COMMENT '创建者' ,
  create_date datetime NOT NULL COMMENT '创建时间' ,
  update_by varchar(64) NOT NULL COMMENT '更新者' ,
  update_date datetime NOT NULL COMMENT '更新时间' ,
  remarks varchar(255) DEFAULT NULL COMMENT '备注信息' ,
  del_flag char(1) NOT NULL DEFAULT '0' COMMENT '删除标记(0:正常;1:删除)',
  primary key (id)
)ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值