Подсчёт суммы в MySql

Опубликовано 2011.11.18 в разделе MySQL

Очень часто бывает необходимость подсчитать сумму в таблице mysql. Если быть точнее-сумму значений в определённых ячейках таблицы. Это делается спомощью оператора SUM. Этому оператору передается имя поля в качестве аргумента. Например имеем таблицу users пользователей, с указанием id, name, dateregister и money.
id name dateregister money
1 Вася 1312700694 125
2 Саша 1314555798 47
3 Коля 1316071029 36
4 Пётр 1318137334 8
5 Агафон 1320819968 15
И нам нужно подсчитать общее количество денег у всех пользователей.Это делается так:
  1. select sum(money) as `total_money` from `users`
В итоге мы получем одну строку состоящую из одной ячейки с именем total_money,которое мы указали в качестве псевдонима(указать можете любое). Тот же самый запрос на DataBase API Drupal 7 будет выглядеть так:
  1. $q->db_select('users','u');
  2. $q->addExpression('SUM(u.money)','total_money');
  3. $q->execute();
Эта форма записи более громоздка,но на деле гораздо удобнее. Почитать об этом API и посмотреть более сложные примеры можно тут Если в запросе нужно поставить условие-используем оператор where. Например посчитать общую сумму денег, только у пользователей, чей баланс более 20.
  1. select sum(money) as `total_money` from `users` where `money`>20
И соответственно на Drupal
  1. $q->db_select('users','u');
  2. $q->addExpression('SUM(u.money)','total_money');
  3. $q->condition('u.money',20,'>');
  4. $q->execute();
Вот впринципе и всё. Если возникли вопросы-пишите в комментариях, дополню статью.

14 Комментариев

Оставить комментарий

  1. Гость 2018/01/12

    1. $sum=mysql_result(mysql_query("select sum(money) from users"),0);

    Вот так это надо делать без выносов суммы в отдельную строку и лишних усложнений кода.

    Ответить

  2. Гость 2017/05/16

    Добрый день, хорошая статья. А не подскажите как подсчитать сумму значений в определённых ячейках таблицы?

    Ответить

    1. Админ 2017/06/28

      Что значит в определённых? Сумму не всех строк?

      Ответить

  3. Гость 2015/06/21

    здравствуйте. ПОдскажите, как посчитать сумму ?

    Ответить

    1. Гость 2015/06/21

      Прошу прощения, как посчитать сумму строки?*

      Ответить

      1. Админ 2015/06/22

        Сумму одной строки? Может сумму колонки?

        Ответить

        1. Гость 2015/06/22

          есть табица в которой есть 12 месяцев (янв, фев, мрт, и т д декабрь) ежемесячно будет вводиться данные которые должны суммироваться в ячейке ИТОгО

          Ответить

          1. Админ 2015/06/23

            Что значит "есть таблица в которой есть 12 месяцев" ?
            12 строк в которых одна ячейка - это название месяца, а другая какие-то данные?
            Или в таблице 12 колонок, каждая из которых соответствует каждому месяцу?
            Скиньте дамп таблицы, и не много данных если можно.

            Ответить

  4. Гость 2013/06/09

    Помогите, как реализовать через функции данную задачу:
    есть столбец `cena`, надо все её значения уменьшить на 10% (или задать переменную, чтобы уменьшать какой хочешь процент) и вывести этот измененный уже столбец.
    Заранее спасибо!

    Ответить

    1. Админ 2013/06/10

      Попробовать всё это сделать на стороне SQL можно, но проще на стороне PHP.

      1. //На сколько процентов уменьшать.
      2. $percent = 10;
      3.  
      4. $q->db_select('items','i');
      5. $q->fields('i',array('cena'));
      6. $res = $q->execute();
      7. while($rec = $res->fetchAssoc()){
      8. echo $rec['cena'] * ((100 - $percent) / 100) . '<br />';
      9. echo round($rec['cena'] * ((100 - $percent) / 100)) . ' - с округлением<br />';
      10. }

      Ответить

      1. Гость 2013/06/19

        огроменное спасибо

        Ответить

  5. Гость 2013/05/19

    Вьехал не сразу но поразбирав пример понял в чём дело, спасибо!

    Ответить

  6. Гость 2012/12/13

    Спасибо, прочитал вашу статью и у меня всё получилось!!!

    Ответить

    1. Админ 2012/12/20

      Пожалуйста))

      Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте телефон