MySQL Grid: ежедневные продажи по сравнению с регионом

Я хочу сделать запрос MySQL, чтобы получить сетку с продажами по странам или городам по дням:

SELECT      DATE(creacion) as fecha,
            SUM(case when order_paid = 'Approved' and info_direccion_pais = 'GB' then 1 else 0 end) as sales_UK,
            SUM(case when order_paid = 'Approved' and info_direccion_pais = 'AU' then 1 else 0 end) as sales_AU
FROM        orders
WHERE       DATE(creacion) >= '2015-01-01'
GROUP BY    fecha
ORDER BY    fecha DESC
LIMIT       0, 100

Этот код возвращает структуру так, как я этого хочу:

fecha   aprobadas_uk    aprobadas_au
2015-04-30  5   7
2015-04-29  2   9
2015-04-28  12  19
2015-04-27  4   22
2015-04-26  8   25
2015-04-25  1   9
2015-04-24  3   4
2015-04-23  3   11
2015-04-22  5   1

Однако мне нужно создать одну строку для каждой из стран, которые у меня есть в записях базы данных, что много, даже больше в случае городов.

Как получить сразу все страны или города?


person Chris Russo    schedule 30.04.2015    source источник
comment
Как выглядит структура вашей таблицы? У вас только один стол? Каким должен быть желаемый результат вашего запроса?   -  person Maximus2012    schedule 01.05.2015


Ответы (1)


Попробуйте это и посмотрите, работает ли это:

SELECT  DATE(creacion) as fecha, info_direccion_pais,
        SUM(case when order_paid = 'Approved' then 1 else 0 end) as sales
FROM        orders
WHERE       DATE(creacion) >= '2015-01-01'
GROUP BY    fecha, info_direccion_pais
ORDER BY    fecha DESC, info_direccion_pais
LIMIT       0, 100

В нем будет 3 столбца: fecha, info_direccion_pais и sales. Это даст код страны, поэтому вы можете присоединиться к нему в таблице другой страны, чтобы получить название страны. Посмотрите на изменения, которые я внес в предложения SELECTи GROUP BY. Я не уверен, но вы даже можете полностью избавиться от пункта LIMIT.

person Maximus2012    schedule 30.04.2015
comment
Обратите внимание, что DATE() будет менее эффективным, чем запрос диапазона. - person Strawberry; 01.05.2015
comment
Достаточно близко Мистер Максимус2012. Я очень ценю ваше предложение. Он одновременно возвращает записи, разделенные по датам и стране, что полезно, но генерирует массив с 3 столбцами, как вы описали. - person Chris Russo; 01.05.2015
comment
Я пытался создать столько столбцов, сколько стран в записях, что может быть немного сложнее, как я полагаю? - person Chris Russo; 01.05.2015
comment
Это верно. Один из способов сделать это - сделать это вручную, как вы пытались сделать в своем вопросе, что является неплохим подходом, если у вас всего несколько стран. - person Maximus2012; 01.05.2015
comment
Посмотрите, поможет ли этот вопрос (и ответ на него): stackoverflow.com/questions/4336985/ Возможно, я неправильно понял ваш первоначальный вопрос. - person Maximus2012; 01.05.2015