Предполагая, что у меня есть таблица ниже:
<pre>
<table>
<tr>
<td><b>id</b></td>
<td><b>name</b></td>
<td><b>rank</b></td>
</tr>
<tr>
<td>A</td>
<td>Chicago</td>
<td>4</td>
</tr>
<tr>
<td>B</td>
<td>New York</td>
<td>3</td>
</tr>
<tr>
<td>A</td>
<td>Chicago</td>
<td>5</td>
</tr>
<tr>
<td>C</td>
<td>Ohio</td>
<td>2</td>
</tr>
<tr>
<td>A</td>
<td>Chicago</td>
<td>3</td>
</tr>
</table>
</pre>
Где столбец id связывает все строки.
Как я могу объединить все строки, имеющие одинаковое значение id вместе, а столбец ранга будет средним для всех объединенных строк.
Например, результат будет выглядеть следующим образом:
<pre>
<table>
<tr>
<td><b>id</b></td>
<td><b>name</b></td>
<td><b>rank</b></td>
</tr>
<tr>
<td>A</td>
<td>Chicago</td>
<td>4</td>
</tr>
<tr>
<td>B</td>
<td>New York</td>
<td>3</td>
</tr>
<tr>
<td>C</td>
<td>Ohio</td>
<td>2</td>
</tr>
</table>
</pre>
Где 4 в столбце ранга - средняя сумма всех строк, слияние в первой таблице
Примечание. Каждая строка представляет собой массив, взятый из 2D-массива. Поэтому результатом должен быть 2D-массив.
Использование SQL слишком сложно, так как эта таблица состоит из 4 других таблиц из базы данных. Поэтому я бы предпочел ответ на PHP или JavaScript
благодаря
попробуй это
select id, name, avg(rank) from yourTable
group by id,name
Как насчет
SELECT id, name, avg(rank) FROM table GROUP BY id, name;
Ключом здесь является группа.
Как вы сказали, ваша таблица создана путем объединения четырех таблиц, вы можете использовать ее с подзапросом:
SELECT id, name, avg(rank) FROM
(
SELECT * FROM whatver --here goes your statement joining the four tables
)
GROUP BY id, name;
SELECT ID,NAME,AVG([RANK])[RANK] FROM TABLE GROUP BY ID,NAME
SELECT 'id', 'name', AVG( rank ) AS 'rank' FROM table_name GROUP BY 'id', 'name'