Ik wil in MySQL van een query die al een GROUP BY heeft de SUM hebben. Probleem is dat ik die GROUP BY moet laten staan, omdat deze belangrijk is voor de functie die wordt aangeroepen. De functie moet dus meerdere keren worden aangeroepen worden.
De query gaat als volgt (onderdeel van een procedure, die vult dus de verschillende variabelen in)
De functie get_wage wordt dus aangeroepen voor elke matchende unieke setMember, precies zoals de bedoeling is? Hoe krijg ik nu het totaal van de waarde die deze functie genereert terug? Ik heb zelf meerdere opties bedacht, deze zijn echter allemaal onhandig:
• Subquery: kan niet, omdat er meerdere resultaten zijn
• Cursors: lijkt me overkill voor zoiets simpels
Eigenlijk zoek ik dus iets wat dezelfde rijen genereert als WITH ROLLUP alleen dan zonder dat ik de originele rijen te zien krijg. Ik heb heel google afgestruind naar dingen als SUPER AGGREGATE maar ik vind niets waarmee ik enkel het totaal te zien krijg.
De query gaat als volgt (onderdeel van een procedure, die vult dus de verschillende variabelen in)
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| SELECT get_wage( mPid, SUM(`mScoreEntry`.`amount`) + IFNULL(SUM(DISTINCT(`mScoreVariable`.`amount`)), 0), work_date, `mSaleUnit`.`setMember`, personid ) AS wage FROM `mSaleUnit` LEFT JOIN `mScoreVariable` ON `mScoreVariable`.`fk_mSCid` = scoresheet AND `mScoreVariable`.`setMember` = `mSaleUnit`.`setMember` AND `mScoreVariable`.`fk_pid` = personid JOIN `mScoreEntry` ON `mScoreEntry`.`fk_mSUid` = `mSaleUnit`.`mSUid` AND `mScoreEntry`.`fk_mSCid` = scoresheet AND `mScoreEntry`.`fk_pid` = personid GROUP BY mSaleUnit.setMember; |
De functie get_wage wordt dus aangeroepen voor elke matchende unieke setMember, precies zoals de bedoeling is? Hoe krijg ik nu het totaal van de waarde die deze functie genereert terug? Ik heb zelf meerdere opties bedacht, deze zijn echter allemaal onhandig:
• Subquery: kan niet, omdat er meerdere resultaten zijn
• Cursors: lijkt me overkill voor zoiets simpels
Eigenlijk zoek ik dus iets wat dezelfde rijen genereert als WITH ROLLUP alleen dan zonder dat ik de originele rijen te zien krijg. Ik heb heel google afgestruind naar dingen als SUPER AGGREGATE maar ik vind niets waarmee ik enkel het totaal te zien krijg.
Ik ontken het bestaan van IE.