2013-02-10 31 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

相關問題