2013-02-10 1 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 ║ 
╚═════════╩════════╩════════╝ 

Мне нужно найти среднее значение field3 для повторяющихся предварительно десятичных значений Field1 (после десятичных значений не важно), для каждого уникального элемента Field2. Значения Field1 определяются как тип CHAR и 7 цифр в длину (включая дефис и десятичные числа).

Я в настоящее время в состоянии найти средние значения для одного конкретного элемента Field2 с помощью ИНЕКЕ, как таковой:

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

Желаемая Result

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

что вы желаемого результата, то основываясь на приведенном выше примере? –

+0

Привет JW, Мой желаемый результат будет что-то похожее на следующее: 'префикс COUNT (префикс) Field2 AVG (суффикс)' ' 11-1 2 Jacob 3.5' ​​ ' 12-2 1 Jacob 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

+0

как насчет ответа ниже? ': D' –

ответ

2

Удалите условие о подзапроса where и группировать их по prefix и Field2.

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

+0

приветствуется ': D' –

 Смежные вопросы

  • Нет связанных вопросов^_^