2013-02-10 79 views
1

给定一个数据查询整个文件中设置类似于:而是通过单独的数据,由每个唯一的列元素分组

╔═════════╦════════╦════════╗ 
║ 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 ║ 
╚═════════╩════════╩════════╝ 

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

我目前能够通过使用WHERE子句,因此找到一个特定的字段2元的平均值:

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名称的次数相同。 我觉得这应该是一个相当简单的改变,我目前的代码,但不知道该怎么做。 在表格中构建这些数据可能有更好的方式,尽管这是我如何接收它并且必须使用它(我不太了解它)。

UPDATE 1个

所需的结果

╔════════╦═════════════╦════════╦═════════╗ 
║ 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 ║ 
╚════════╩═════════════╩════════╩═════════╝ 
+0

? – 2013-02-10 05:11:01

+0

嗨JW, 我期望的结果将类似于下面的内容: '前缀COUNT(前缀)字段2 AVG(后缀)'' 2月11日至一日雅各3.5' '1月12日至2日雅各3' ' 13-3 3 Jacob 3' '11-1 2 Chris 3.5' '12-2 1 Chris 2' '13-3 3 Chris 3' '11-1 2 Mike 3.5' (等等文件中的其他Field2名称)' 感谢您的快速响应。 编辑*我的代码在注释中无法使用。试图将其排除。 – TheDoctor 2013-02-10 05:20:33

+0

下面的答案如何? ':D' – 2013-02-10 05:25:35

回答

2

卸下子查询中的where子句和由prefixField2和分组它们。

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 

输出,什么是你根据上面的例子所期望的结果,那么

+--------+-------------+--------+---------+ 
| 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 | 
+--------+-------------+--------+---------+ 
+0

完美,产生我正在寻找的东西。 非常感谢JW,非常放心拥有这个! – TheDoctor 2013-02-10 05:43:15

+0

不客气':D' – 2013-02-10 05:43:34

相关问题