计算用户订购率梧桐数据库和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升序排列。

评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值