首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询整个文件,但使用单独的数据,按每个唯一的列元素分组

查询整个文件,但使用单独的数据,按每个唯一的列元素分组
EN

Stack Overflow用户
提问于 2013-02-10 05:10:05
回答 1查看 178关注 0票数 1

给定的数据集类似于:

代码语言:javascript
复制
╔═════════╦════════╦════════╗
║ FIELD1  ║ FIELD2 ║ FIELD3 ║
╠═════════╬════════╬════════╣
║ 11-1.01 ║ Jacob  ║      3 ║
║ 11-1.02 ║ Jacob  ║      4 ║
║ 12-2.01 ║ Jacob  ║      3 ║
║ 13-3.01 ║ Jacob  ║      4 ║
║ 13-3.02 ║ Jacob  ║      3 ║
║ 13-3.03 ║ Jacob  ║      2 ║
║ 11-1.01 ║ Chris  ║      3 ║
║ 11-1.02 ║ Chris  ║      4 ║
║ 12-2.01 ║ Chris  ║      2 ║
║ 13-3.01 ║ Chris  ║      4 ║
║ 13-3.02 ║ Chris  ║      3 ║
║ 13-3.03 ║ Chris  ║      2 ║
║ 11-1.01 ║ Mike   ║      4 ║
║ 11-1.02 ║ Mike   ║      3 ║
╚═════════╩════════╩════════╝

对于每个唯一的Field3元素,我需要为Field1的重复十进制前值(后十进制值并不重要)找到Field2值的平均值。Field1值定义为CHAR类型,长度为7位数字(包括连字符和十进制)。

通过使用WHERE子句,我目前能够找到一个特定Field2元素的平均值,如下所示:

代码语言:javascript
复制
SELECT prefix, COUNT(prefix), Field2, FORMAT(AVG(suffix),2)
FROM
(
  SELECT LEFT(Field1,4) AS prefix, Field3 AS suffix, Field2
  FROM mytable WHERE Field2 = 'Jacob'
)x
GROUP BY prefix;

但是,我的目标是遍历整个文件并为每个不同的Field2元素找到平均值,所以我不需要像运行唯一的Field2名称那样多次运行程序。我觉得这对我当前的代码来说应该是一个相当容易的改变,但是我不知道该做什么。也许有一种更好的方法来构造表中的数据,尽管我是这样接收它的,并且必须使用它(我对它不太了解)。

更新1

期望结果

代码语言:javascript
复制
╔════════╦═════════════╦════════╦═════════╗
║ PREFIX ║ PREFIXCOUNT ║ FIELD2 ║ AVERAGE ║
╠════════╬═════════════╬════════╬═════════╣
║ 11-1   ║           2 ║ Chris  ║ 3.50    ║
║ 12-2   ║           1 ║ Chris  ║ 2.00    ║
║ 13-3   ║           3 ║ Chris  ║ 3.00    ║
║ 11-1   ║           2 ║ Jacob  ║ 3.50    ║
║ 12-2   ║           1 ║ Jacob  ║ 3.00    ║
║ 13-3   ║           3 ║ Jacob  ║ 3.00    ║
║ 11-1   ║           2 ║ Mike   ║ 3.50    ║
╚════════╩═════════════╩════════╩═════════╝
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-10 05:23:42

删除子查询上的where子句,并按prefixField2对它们进行分组。

代码语言:javascript
复制
SELECT  prefix, 
        COUNT(prefix) PrefixCount, 
        Field2, 
        FORMAT(AVG(suffix),2) Average
FROM
        (
          SELECT    LEFT(Field1,4) AS prefix, 
                    Field3 AS suffix, 
                    Field2
          FROM      TableName 
        )   x
GROUP   BY prefix, Field2
ORDER   BY Field2, prefix
  • SQLFiddle演示

输出,

代码语言:javascript
复制
+--------+-------------+--------+---------+
| PREFIX | PREFIXCOUNT | FIELD2 | AVERAGE |
+--------+-------------+--------+---------+
| 11-1   |           2 | Chris  | 3.50    |
| 12-2   |           1 | Chris  | 2.00    |
| 13-3   |           3 | Chris  | 3.00    |
| 11-1   |           2 | Jacob  | 3.50    |
| 12-2   |           1 | Jacob  | 3.00    |
| 13-3   |           3 | Jacob  | 3.00    |
| 11-1   |           2 | Mike   | 3.50    |
+--------+-------------+--------+---------+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14794913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档