Как я могу использовать SUM () для суммирования моего массива результатов?

0

Мой текущий метод добавления строк выглядит следующим образом:

$totalxp = $row['Attackxp'] + $row['Defencexp'] + $row['Strengthxp'] + $row['Hitpointsxp'] + $row['Rangedxp'] + $row['Prayerxp'] + $row['Magicxp'] + $row['Cookingxp'] + $row['Woodcuttingxp'] + $row['Fletchingxp'] + $row['Fishingxp'] + $row['Firemakingxp'] + $row['Craftingxp'] + $row['Smithingxp'] + $row['Miningxp'] + $row['Herblorexp'] + $row['Agilityxp'] + $row['Thievingxp'] + $row['Slayerxp'] + $row['Farmingxp'] + $row['Runecraftxp'] + $row['Constructionxp'];

Но потом я увидел SUM(), и я попробовал это:

SELECT SUM(xp) FROM skills WHERE playerName='Undercover' 

Он работает, но мне нужны все значения xp, поэтому я попытался добавить %xp, но он не будет работать.

Как я мог использовать функцию Sum(), чтобы добавить все строки вверх, а не напрягать PHP?

  • 0
    Можем ли мы увидеть структуру вашего стола?
  • 3
    Все ли значения находятся в одной строке в разных столбцах или в нескольких строках в одном столбце? SUM предназначен для агрегатов по нескольким строкам в одном столбце / выражении.
Теги:
aggregate-functions

3 ответа

3
Лучший ответ

Агрегатные функции (IE: SUM, MIN, MAX, COUNT и т.д.) не работают по столбцам - они работают с значениями для конкретного столбца на основе группировки (GROUP BY) и фильтрации (JOIN и/или WHERE).

Чтобы добавить значения по столбцам, вам нужно добавить их, как и для обычных математических уравнений:

SELECT Attackxp + Defencexp + Strengthxp + Hitpointsxp + Rangedxp + Prayerxp + Magicxp + Cookingxp+ Woodcuttingxp + Fletchingxp + Fishingxp + Firemakingxp + Craftingxp + Smithingxp + Miningxp + Herblorexp + Agilityxp + Thievingxp + Slayerxp + Farmingxp + Runecraftxp + Constructionxp AS total_xp
  FROM skills 
 WHERE playerName = 'Undercover' 

Если у вас более одной записи, связанной с именем воспроизведения, вы можете использовать агрегатную функцию:

SELECT SUM(Attackxp + Defencexp + Strengthxp + Hitpointsxp + Rangedxp + Prayerxp + Magicxp + Cookingxp+ Woodcuttingxp + Fletchingxp + Fishingxp + Firemakingxp + Craftingxp + Smithingxp + Miningxp + Herblorexp + Agilityxp + Thievingxp + Slayerxp + Farmingxp + Runecraftxp + Constructionxp) AS total_xp
  FROM skills 
 WHERE playerName = 'Undercover'
  • 0
    +1 хорошо объяснил ...
  • 0
    Спасибо за разъяснение. :)
Показать ещё 7 комментариев
1

Это зависит от данных таблицы, если каждый игрок является одной сущностью (строкой), а затем сбрасывает столбцы:

SELECT Attackxp  + Defencexp + Strengthxp + Hitpointsxp +Rangedxp + Prayerxp + Magicxp + Cookingxp + Woodcuttingxp + Fletchingxp + Fishingxp + Firemakingxp + Craftingxp + Smithingxp + Miningxp + Herblorexp + Agilityxp + Thievingxp + Slayerxp + Farmingxp + Runecraftxp + Constructionxp 
As totalSkills FROM skills WHERE playerName = 'Undercover'

Но есть ли больше строк на игрока, тогда вам нужно будет также суммировать строки

SELECT SUM(Attackxp  + Defencexp + Strengthxp + Hitpointsxp +Rangedxp + Prayerxp + Magicxp + Cookingxp + Woodcuttingxp + Fletchingxp + Fishingxp + Firemakingxp + Craftingxp + Smithingxp + Miningxp + Herblorexp + Agilityxp + Thievingxp + Slayerxp + Farmingxp + Runecraftxp + Constructionxp) 
As totalSkills FROM skills WHERE playerName = 'Undercover'
0
SELECT SUM(`Attackxp`) + SUM(`Defencexp`) + ... AS `total_sum`
  FROM skills
 WHERE playerName='Undercover' 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню