За последние 24 часа нас посетили 21490 программистов и 1025 роботов. Сейчас ищут 683 программиста ...

Добавить столбец-результат справа

Тема в разделе "MySQL", создана пользователем Konstant1n, 27 сен 2019.

  1. Konstant1n

    Konstant1n Активный пользователь

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Всем привет.
    Есть таблица оплат услуг: id, status, charge, updated_at.
    Если клиент оплатил, ststus = payed, иначе ststus = unpayed.
    Сума в столбце charge.
    Updated_at - datetime.

    Я делал запрос - сумма оплаченных (payed) по месяцам и по годам:
    Код (Text):
    1. SELECT YEAR(updated_at) as year, MONTH(updated_at) as month, SUM(charge) AS charge_sum FROM ssi WHERE status=payed GROUP by year, month
    В итоге у меня получилось - payed
    year month charge_sum
    2019 7 3225108
    2019 8 744000
    2019 9 650000
    2020 7 9000
    2020 8 3000
    2020 9 2000


    Как мне добавить столбец справа - сумма unpayed?
     
  2. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    Код (Text):
    1. SELECT
    2.     YEAR(updated_at) as year,
    3.     MONTH(updated_at) as month,
    4.     SUM(case when status='payed' then charge else 0 end) AS charge_sum_payed,
    5.     SUM(case when status='unpayed' then charge else 0 end) AS charge_sum_unpayed
    6. FROM ssi
    7.     GROUP by year, month
     
    Konstant1n и artoodetoo нравится это.
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Не обязательно, но просто из практики:
    Обычно поля для двоичной логики описывают как BOOL или TYNYINT(1) и хранятся там значения 1 или 0, а проверяют как
    WHERE status
    или
    WHERE NOT status
     
    Konstant1n нравится это.
  4. Konstant1n

    Konstant1n Активный пользователь

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    это так, для примера. там еще есть статусы, т.е больше двух
    --- Добавлено ---
    а на Laravel это написать слабо? :);)
    --- Добавлено ---
    круто, чувак. СПАСИБО