Вычислить проценты с помощью MySQL/Javascript

У меня есть проблемный SQL-запрос, который я пытаюсь выполнить с помощью Entrinsik's Informer. Я хочу, чтобы Informer выполнил расчет моего результата, чтобы сделать процент, используя javascript. Однако в Informer отсутствует возможность доступа к данным в столбцах вниз (т. е. мое общее количество в процентах), поэтому мне нужен мой SQL-запрос, чтобы сгенерировать это для меня. В настоящее время результат выглядит следующим образом:

refund_code    refund_amount    month_group
-----------    -------------    -----------
ref1               10           january
ref2               20           january
ref3               30           january
ref1               40           february
ref2               50           february
ref3               60           february

Я хотел бы что-то вроде этого:

refund_code    refund_amount    month_group    month_total  
-----------    -------------    -----------    -----------  
ref1               10           january                 60  
ref2               20           january                 60  
ref3               30           january                 60  
ref1               40           february               150  
ref2               50           february               150  
ref3               60           february               150  

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

SELECT mr.month_group,
    bd.transaction_code AS refund_code,
    SUM(bd.extended) AS refund_amount
FROM   billing_details AS bd
    LEFT JOIN monthly_ranges AS mr
        ON ( bd.entry_date BETWEEN mr.start_date AND mr.end_date )
WHERE  bd.transaction_code IN ( 'REFPRI', 'REFSEC', 'REFPT', 'REFREQPRI' )
    AND bd.entry_date >= '2012-01-05'
GROUP BY mr.month_group, bd.transaction_code
ORDER BY mr.month_group, bd.transaction_code

И второй запрос для создания таблицы итогов за месяц выглядит так:

SELECT mr.month_group,
    SUM(bd.extended) AS refund_amount
FROM   billing_details AS bd
    LEFT JOIN monthly_ranges AS mr
        ON ( bd.entry_date BETWEEN mr.start_date AND mr.end_date )
WHERE  bd.transaction_code IN ( 'REFPRI', 'REFSEC', 'REFPT', 'REFREQPRI' )
    AND bd.entry_date >= '2012-01-05'
GROUP BY mr.month_group
ORDER BY mr.month_group

Так есть ли способ объединить два?


person user1706938    schedule 28.09.2012    source источник


Ответы (1)


Технически вы можете буквально соединить их как подзапросы.

i.e.

SELECT m.refund_code, m.refund_amount, m.month_group, t.month_total
 FROM (your refund query above) m
 JOIN (your total query above) t
   ON m.month_group = t.month_group

Просто убедитесь, что вы переименовали «refund_amount» в «общем запросе» на «month_total» или что-то подобное.

person dispake    schedule 28.09.2012