RSQLite 在查询中对函数使用 group-by
RSQLite using group-by for functions within the query
我是 SQL 的新手(目前在 R 中使用 RSQLite 和 DBI 包)
我正在尝试创建一个列,它是绝对平均偏差,又名:
(i) - AVG(i,g)
其中 i 是个体出现次数,AVG 分量是组的平均值。我遇到的麻烦是确保 AVG 组件是唯一被分组的部分。当我执行 GROUP BY 时,它会将所有内容分组,但没有给我正确的数字。
示例数据如下:
student
class
grade
A
English
79
A
Spanish
65
A
Chemistry
92
B
English
46
B
Spanish
83
B
Chemistry
78
C
English
67
C
Spanish
87
C
Chemistry
98
D
English
99
D
Spanish
80
D
Chemistry
75
基本上我希望 class 中学生的个人成绩与该学生的平均成绩进行比较(例如,个人英语成绩 - 学生的总平均成绩)
我试过以下方法:
dbGetQuery(gradesdb, "SELECT student,
ABS(grade-AVG(grade)) AS mad
FROM grades
GROUP BY student,class")
这为我提供了所有统计值的 0(我收集到的是因为分组依据正在进行查询中的所有选定操作)
我怎样才能使计算的 AVG 部分仅由学生“分组”。
如果我这样做,我会得到正确的计算:
dbGetQuery(gradesdb2, "SELECT student,
ABS(grade-AVG(grade)) AS mad
FROM grades
GROUP BY student")
但是我只得到每个学生的第一个 class,而不是每个 class 的统计数据和学生的平均水平。
我想在 SQL 中完成这一切,而不是将平均值计算为具有基数 R 或 tidyverse 的单独列。
非常感谢您的帮助!
考虑通过 GROUPBY
将 AVG()
转变为 AVG()
通过 window function:
SELECT student,
ABS(grade - AVG(grade) OVER (PARTITION BY student)) AS mad
FROM grades
我是 SQL 的新手(目前在 R 中使用 RSQLite 和 DBI 包)
我正在尝试创建一个列,它是绝对平均偏差,又名:
(i) - AVG(i,g)
其中 i 是个体出现次数,AVG 分量是组的平均值。我遇到的麻烦是确保 AVG 组件是唯一被分组的部分。当我执行 GROUP BY 时,它会将所有内容分组,但没有给我正确的数字。
示例数据如下:
student | class | grade |
---|---|---|
A | English | 79 |
A | Spanish | 65 |
A | Chemistry | 92 |
B | English | 46 |
B | Spanish | 83 |
B | Chemistry | 78 |
C | English | 67 |
C | Spanish | 87 |
C | Chemistry | 98 |
D | English | 99 |
D | Spanish | 80 |
D | Chemistry | 75 |
基本上我希望 class 中学生的个人成绩与该学生的平均成绩进行比较(例如,个人英语成绩 - 学生的总平均成绩)
我试过以下方法:
dbGetQuery(gradesdb, "SELECT student,
ABS(grade-AVG(grade)) AS mad
FROM grades
GROUP BY student,class")
这为我提供了所有统计值的 0(我收集到的是因为分组依据正在进行查询中的所有选定操作)
我怎样才能使计算的 AVG 部分仅由学生“分组”。 如果我这样做,我会得到正确的计算:
dbGetQuery(gradesdb2, "SELECT student,
ABS(grade-AVG(grade)) AS mad
FROM grades
GROUP BY student")
但是我只得到每个学生的第一个 class,而不是每个 class 的统计数据和学生的平均水平。
我想在 SQL 中完成这一切,而不是将平均值计算为具有基数 R 或 tidyverse 的单独列。
非常感谢您的帮助!
考虑通过 GROUPBY
将 AVG()
转变为 AVG()
通过 window function:
SELECT student,
ABS(grade - AVG(grade) OVER (PARTITION BY student)) AS mad
FROM grades