Выбрать с группировкой в ​​MySQL - PullRequest
2 голосов
/ 28 марта 2011

У меня есть 2 таблицы:

оплата '

|id_tax|value|id_currency|
--------------------------
|1     |100  |12         |
|1     |200  |12         |
|1     |300  |13         |
|2     |200  |12         |
|2     |200  |12         |
--------------------------

ставка '

|id_currency|rate|
------------------
|12         |1   |
|13         |6,12|
------------------

Какой SQL-запрос приведет к этому?

|id_tax|value               |
-----------------------------
|1     |100*1+200*1+300*6,12|
|2     |200*1+200*1         |
-----------------------------

Ответы [ 2 ]

2 голосов
/ 28 марта 2011
SELECT  id_tax, SUM(value * rate)
FROM    pay p
JOIN    rate r
ON      r.id_currency = p.id_currency
GROUP BY
        id_tax
1 голос
/ 28 марта 2011

В MySQL его можно вычислить с помощью переменных сеанса:

SET @s = 0; 

SELECT  id_tax, @s := s +(value * rate)
FROM    pay p
JOIN    rate r
ON      r.id_currency = p.id_currency
GROUP BY
   p.id_tax

или чисто на основе множеств, но менее эффективным способом:

SELECT  pay.id_currency, pay.val, SUM(pay.value * rate.rate)
FROM    pay
JOIN    rate
ON      rate.id_currency = pay.id_currency
GROUP BY
        pay.id_tax
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...