【发布时间】:2020-12-12 03:26:06
【问题描述】:
我有一个唯一用户表,每个用户都有一个“评分”列(这是他们在不同评论表中给出的所有评分中给出的平均评分)。我想在我的表中添加另一列,指定他们给出的评分高于所有用户的所有评分的平均值(因此我使用 AVG() 函数)、低于或平均值(我称之为“偏差” )。换句话说,我想看看每个用户的平均评分是否高于或低于总平均评分。我了解此查询的局限性,理想情况下我会包含一个区间(即低于或高于平均值 0.5 点仍算作平均值),但我似乎无法使最简单的查询工作。
我一直在使用 Coursera 课程中的 Yelp 数据集,但我尝试创建一个样本,该样本产生了我不想要的相同结果 - 仅一行。我想对每一行进行这种分类,因此在这个例子中它应该返回 3 行,前两行“低于平均水平”,第三行“高于平均水平”。但是,下面的代码只产生一行。我一直在使用 R,这似乎我使用了不正确的语法,但是在网上搜索了 30 分钟后,我找不到解决方案。
我正在工作并希望在 Coursera 的课程中使用 SQLite 语法
CREATE TABLE test
(
id integer primary key,
rating integer
);
INSERT INTO test
(id, rating)
VALUES
(1, 1);
INSERT INTO test
(id, rating)
VALUES
(2, 3);
INSERT INTO test
(id, rating)
VALUES
(3, 8);
SELECT id,
rating,
CASE
WHEN rating > AVG(rating) THEN "above average"
WHEN rating < AVG(rating) THEN "below average"
ELSE "no bias"
END AS "bias"
FROM test
【问题讨论】: