이 mysql 쿼리에 문제가 있습니다. 기본적으로 지불 테이블 (CostiFissi, 비용이있는 테이블)을 지불 테이블 (Pagamenti)과 연결하고, 비용 ID (CostiFissi_IdCostoFisso)로 그룹화하고 월별 총 지불 금액 (AVG (Totale)).mySQL SUM 및 COUNT 문제, 일부 값이 두 배로 증가합니다.
즉, 10 월에 9 월과 3000 + 2000 1000 사이의 평균이 아닌
이 3000 내가 지금까지했던 것입니다 2250을 반환해야합니다 : 나는 쿼리를 실행할 때보다 더
SELECT `cf`.`IdCostoFisso`,
`cf`.`Nome`,
`cf`.`Frequenza`,
`cf`.`Importo`,
`cf`.`DateFrom`,
`cf`.`DateTo`,
SUM(p.Totale) PagamentiTotale,
COUNT(p.IdPagamento) PagamentiNum,
AVG(p2.somma_mese) Media
FROM (`CostiFissi` cf)
LEFT JOIN `Pagamenti` p ON `p`.`CostiFissi_IdCostoFisso` = `cf`.`IdCostoFisso`
LEFT JOIN (
SELECT MONTH(Data),
YEAR(Data),
CostiFissi_IdCostoFisso,
SUM(Totale) somma_mese
FROM Pagamenti
GROUP BY YEAR(Data),
MONTH(Data),
CostiFissi_IdCostoFisso
) AS p2 ON `p2`.`CostiFissi_IdCostoFisso` = `cf`.`IdCostoFisso`
WHERE `cf`.`DateTo` > '2012-09-27 09:46:14'
AND `p`.`Data` >= '2012-01-01 00:00:01'
AND `p`.`Data` <= '2012-12-31 23:59:59'
GROUP BY `cf`.`IdCostoFisso`
나는이 문제를 겪는다 : 나는 2 개의 비용, cost_a (3 번 지불) 및 cost_b (1/지불)가 있다고 말하고, 둘 다 (내가 계산되기를 원함)하지만 COUNT (p.IdPagamento)는 cost_a에 대해 6을 반환하고 (3이 아님) cost_b에 대해 1을 반환합니다. SUM (p.Totale)과 동일하지만 cost_a는 2 배가되고 cost_b는 그렇지 않습니다.
어쩌면 표 P에 문제가 합류 날이 지점에 도착하는 나도 몰라 ...이 걸 렸어요하지만 지금은 조금 지저분한 그리고 나는> _ 더 <
타이를 얻을 수 있습니다!
먼저 그룹에 가입했습니다. 먼저 그룹화 한 다음 가입하십시오. 훨씬 더 빠를 것이며 추가 보너스로 올바른 결과를 얻을 수 있습니다. –
DISTINCT, 저것은 마술 낱말 저주이었다! : D btw, @MarkByers 조언이 너무 좋아요. :) –