梧桐数据库之以识别优质的移动服务套餐为例讲解SQL实现

一、背景说明

移动运营商可以提供多种不同的移动服务套餐给客户,每个套餐都有其独特的描述、价格以及用户满意度评分。为了更好地了解市场反应并优化产品组合,我们需要对现有的套餐进行分析,找出那些被用户认为“优质”且具有奇数ID的套餐。这里,“优质”的定义是该套餐的描述不包含“boring”这个词,最终结果将按用户满意度从高到低排序。下面将以 梧桐数据库的实现为例,给大家讲解实现思路。

二、表结构说明

-- 移动服务套餐表建表语句
CREATE TABLE packages (
  id INT PRIMARY KEY COMMENT '套餐ID',
  package_name VARCHAR(255) NOT NULL COMMENT '套餐名称',
  description TEXT NOT NULL COMMENT '套餐描述',
  satisfaction_rating DECIMAL(3,2) NOT NULL COMMENT '用户满意度评分(0-10分)'
);

三、表数据插入

INSERT INTO packages (id, package_name, description, satisfaction_rating) VALUES
(1, '无限流量包', '享受无限制的数据使用量,适合重度网络使用者。', 9.2),
(2, '家庭共享包', '一个账号支持多个设备同时在线,非常适合家庭使用。', 8.7),
(3, '基础语音包', '提供基本的通话服务,适用于较少上网的用户。', 5.6),
(4, '国际漫游包', '为出国旅行者提供的特别优惠,包括国际通话和数据。', 8.4),
(5, '视频流媒体包', '专为喜欢在线观看电影和电视节目的用户设计。', 9.5),
(6, '经济实惠包', '价格亲民的基础套餐,满足日常通讯需求。', 6.8);

四、实现思路分解

  1. 筛选条件:首先根据题目要求,选择description中不含"boring"关键字的记录。
  2. 进一步筛选:接着,仅保留那些id为奇数的记录。
  3. 排序:最后,按照satisfaction_rating字段降序排列结果集,以确保最高评价的服务排在最前面。

五、SQL代码实现

SELECT
	* 
FROM
	packages 
WHERE
	description NOT LIKE '%boring%' -- 剔除description中包含'boring'的数据
	AND MOD ( id, 2 ) = 1 -- 通过mod函数,筛选出id为奇数的数据
ORDER BY
	satisfaction_rating DESC; -- 按照satisfaction_rating降序排列

SQL查询语句通过结合使用LIKE操作符来排除含有特定关键字的记录,利用数学函数MOD()识别奇数ID,并通过ORDER BY子句实现了所需的数据排序。这样就可以有效地获取到符合业务需求的数据集合。

执行结果如下:

idpackage_namedescriptionsatisfaction_rating
5 视频流媒体包 专为喜欢在线观看电影和电视节目的用户设计 9.50
1 无限流量包 享受无限制的数据使用量,适合重度网络使用者。 9.20
3 基础语音包 提供基本的通话服务,适用于较少上网的用户。 5.60
posted @ 2024-11-25 16:11  陈小他  阅读(25)  评论(2)    收藏  举报
window.cnblogsConfig = { footer: { style: 1, }, }