我的table看起来像下面
x y z
a ab 2
a ab 4
a ac 4
b ab 6
b ab 4
b ad 8
c ac 10
c ac 10
字符串
我要找的是这个:
x y avg_z number_of_sample
a ab 3 2
a ac 4 1
b ab 5 2
b ad 8 1
c ac 10 2
型
基本上我现在有这个:
SELECT x, y, AVG(z) AS avg_z
FROM table1
GROUP BY x, y
型
但我不能为每种情况创建一个带有样本数量的下一列。你知道我该怎么解决吗?
谨致问候
2条答案
按热度按时间zyfwsgd61#
您可以按以下方式执行此操作:
字符串
ttcibm8c2#
简短回答
字符串
长答案(数据库如何执行查询)
假设我们有一个名为data的表,其中包含以下数据:
| 是的| y |
| --| ------------ |
| 一个| 1 |
| 二个| 2 |
| 一个| 1 |
| 三个| 3 |
| 二个| 2 |
第一步:取数
数据库引擎从数据表中检索数据。
第二步:分组
数据基于列x和y中的值的唯一组合进行分组。分组如下:
第1组:(x =“A”,y=1)
| 是的| y |
| --| ------------ |
| 一个| 1 |
| 一个| 1 |
第2组:(x =“B”,y=2)
| 是的| y |
| --| ------------ |
| 二个| 2 |
所以剩下的值是1
第三步:聚合
对于每个组,应用COUNT()函数来计算每个组中出现的次数:
组1:(x ='A',y=1),COUNT()= 2
组2:(x ='B',y=2),COUNT(*)= 1
等等
第四步:生成结果
生成最终结果集,将分组的列(x和y)与每个组的计算occurrence_count相结合:
| 是的|出现次数| occurrence_count |
| --|--| ------------ |
| 一个|二个| 2 |
| 二个|一个| 1 |
| 三个|一个| 1 |
| 二个|一个| 1 |
第五步:查询完成
结果集将呈现给请求数据的用户或应用程序。