当前位置: 首页 > article >正文

计算用户订购率梧桐数据库和oracle数据库sql分析

一、背景说明

移动运营商平台提供多种类型的产品权益,用户可以通过订购来使用。平台需要定期统计各个产品的用户订购情况,以便了解各个产品的受欢迎程度。这些统计数据将用于优化产品、提升用户体验和制定市场推广策略。

二、表结构说明

梧桐数据库建表语句

用户表

CREATE TABLE users(  
    useid INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'Primary Key',
    username VARCHAR(255)
) comment '用户表';

注册表

create table Register(
    contest_id  INT not null ,
    user_id int not null 
)comment '注册表';

oracle数据库建表语句

用户表

CREATE TABLE users (
    useid   INT PRIMARY KEY,
    username VARCHAR2(255)
) COMMENT ON TABLE users IS '用户表';

注册表

CREATE TABLE Register (
    contest_id INT NOT NULL,
    user_id INT NOT NULL,
    CONSTRAINT pk_register PRIMARY KEY (contest_id, user_id)
);

三、表数据插入

梧桐数据库、oracle数据库sql语句插入,由于两种数据库插入sql基本一致,这边以梧桐数据库展示。

用户表
INSERT INTO users ( useid, username ) values ( 8, 'wang' );
INSERT INTO users ( useid, username ) values ( 3, 'ding');
INSERT INTO users ( useid, username ) values ( 6, 'zhao' );
INSERT INTO users ( useid, username ) values ( 1, 'xu' );
注册表
INSERT INTO `Register` ( contest_id, user_id ) values ( 212, '1' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 213, '1' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 214, '1' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 220, '1' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 156, '1' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 156, '3' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 212, '3' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 212, '6' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 212, '8' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 213, '3' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 213, '6' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 213, '8' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 220, '3' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 220, '8' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 214, '3' );
INSERT INTO `Register` ( contest_id, user_id ) values ( 156, '8' );

四、sql实现

SELECT 
    contest_id,
    ROUND(COUNT(DISTINCT user_id) / (SELECT COUNT(*) FROM users) * 100, 2) AS percentage
FROM 
    Register
GROUP BY 
    contest_id
ORDER BY 
    percentage DESC, 
    contest_id;

五、sql实现思路分析

ROUND(COUNT(DISTINCT user_id) / (SELECT COUNT() FROM users) * 100, 2) AS percentage: 计算每个产品的注册用户百分比,并保留两位小数。 COUNT(DISTINCT user_id): 计算每个产品的唯一注册用户数量。 (SELECT COUNT() FROM users): 计算总用户数量。

*100: 将结果转换为百分比。

ROUND(..., 2): 将结果保留两位小数。

GROUP BY contest_id: 按产品ID分组

ORDER BY percentage DESC, contest_id: 先按百分比降序排列,如果百分比相同,则按产品ID升序排列。


http://www.kler.cn/a/389306.html

相关文章:

  • 丹摩征文活动|丹摩智算平台使用指南
  • 性能优化、安全
  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • WebRTC API分析
  • leetcode hot100【LeetCode 114.二叉树展开为链表】java实现
  • 【2024最新】基于springboot+vue的闲一品交易平台lw+ppt
  • 关于elementui el-radio 赋值问题
  • Redis 高并发分布式锁实战
  • 基于vue框架的的社区人员信息管理系统4x9bn(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 网络安全属性详解
  • 【Linux 28】应用层协议 - HTTPS
  • xtu oj 数字
  • pdf转excel;pdf中表格提取
  • Three.js 搭建3D隧道监测
  • 江西省补贴性线上职业技能培训管理平台(刷课系统)
  • HarmonyOS Next 实战卡片开发 02
  • 【微服务】不同微服务之间用户信息的获取和传递方案
  • 11 Oracle Golden Gate 高可用解决方案:Golden Gate 助力企业保障业务连续性
  • (RK3566驱动开发 - 1).pinctrl和gpio子系统
  • vscode中使用c/c++插件运行c代码后占用c盘空间问题的解决
  • 呼叫中心系统监控预警功能的应用
  • 纯css制作声波扩散动画、js+css3波纹催眠动画特效、【css3动画】圆波扩散效果、雷达光波效果完整代码
  • 【LeetCode】【算法】209. 课程表
  • 蓝桥杯备赛(持续更新)
  • 【C语言刷力扣】66.加一
  • 京东商品SKU信息的“窃听风云”:Python爬虫的幽默之旅