Ответы пользователя по тегу SQL
  • Как составить запрос - сумма продаж за каждый день?

    NikitaTratorov
    @NikitaTratorov
    CTO
    Как описал Армянское Радио, обычно это делают так
    select sum(`объем`), DATE(`дата`) group by DATE(`дата`) from `таблица`

    но если в базе дата хранится в unix формате (числом), то вместо DATE() можете подставить DATE(UNIX_TIMESTAMP(`дата`))
    P.S. В select DATE() нужна, чтобы не вводить в заблуждение непонятным временем.
    Ответ написан
    Комментировать
  • Как перекрёстно сгрупировать выдачу через GROUP BY в MYSQL?

    NikitaTratorov
    @NikitaTratorov
    CTO
    Вы хотите невозможного. Думаю, что у Вас проблема в алгоритме или логике, поэтому и задача возникла. Подумайте еще.
    Что касается Вашего запроса, то подобная группировка уже не сработает на MySQL 5.7 из-за более строгих правил sql_mode.
    Вам никак не получить строку, которую Вы нарисовали, потому что text = Хорошо) написал не 3, а 1.
    Но уж если ооочень хочется, то переложите желаемую группировку на приложение, вычисляя, с кем разговаривал 1. Отстаньте от БД - сэкономите свое время и ресурсы СУБД.
    Или, я уже говорил - меняйте логику.
    Ответ написан
    Комментировать
  • Как посчитать сумы разных категорий за каждый день?

    NikitaTratorov
    @NikitaTratorov
    CTO
    Если не обращать внимание на то, что Вы сфантазировали два новых столбца, то легко:
    SELECT Table1.user_id,
           Table1.`date`,
           SUM(Table1.amount) as sum,
           Table1.currency
      FROM new_site.Table1 Table1
    GROUP BY Table1.currency, Table1.`date`

    А если Вам нужно генерировать столбцы, то увы, их нужно знать заранее и дописывать в запрос динамически:
    SELECT 
    Table1.user_id, 
    Table1.`date`, 
    (SELECT SUM(amount) FROM Table1 tbl2 WHERE tbl2.`date` = Table1.`date` AND tbl2.currency = 'USD') as USD,
    (SELECT SUM(amount) FROM Table1 tbl2 WHERE tbl2.`date` = Table1.`date` AND tbl2.currency = 'EUR') as EUR
      FROM new_site.Table1 Table1
    GROUP BY Table1.`date`
    Ответ написан
    Комментировать