Sto costruendo una query per un report con più condizioni IF su SUM. Sto avendo problemi con più condizioni IF su SUM.Query somma MYSQL con condizione IF
Ecco la domanda:
SELECT SUM(`totalamount`) AS Total,
SUM(`PayPalFee`) AS Fees,
DATE(`TransactionDate`) AS `Day`,
SUM(IF(PaymentType = "paypal", 1,0)) AS Paypal,
SUM(IF(PaymentType = "check", 1,0)) AS Checks,
SUM(IF(PaymentType = "credit card", 1,0)) AS CreditCard,
COUNT(*) AS Entries
FROM my_table
WHERE TransactionDate between '2011-05-05' AND '2012-01-30'
GROUP BY day
ORDER BY `day` ASC
Questa query funziona bene.
Quando provo ad aggiungere l'istruzione SUM sotto condizionale:
SUM('TotalAmount'(PaymentType = "credit card", 1,0)) AS CreditCardTotal,
Questa istruzione IF condizionale fallisce fuori.
Ho una colonna denominata "TotalAmount" e una colonna denominata "PaymentType" Sto cercando di creare una SOMMA delle transazioni con carta di credito ogni giorno, una SOMMA delle transazioni di assegni per ogni giorno, una SOMMA del paypal transazioni di ogni giorno ,. Ho provato a creare una sottoquery ma questo restituisce un valore per l'intera colonna TotalAmount, non suddivisa per giorno.
Fantastico! Grazie, non posso ancora accettarlo, ma lo farò. –
@aleroot c'è qualche differenza tra 'SUM (CASE WHEN .. THEN .. ELSE .. END)' e 'SUM (IF (.., .., ..))' quando desidero controllare solo una condizione (se qualche campo booleano è 1)? Voglio dire, quale dovrebbe essere più veloce? – NHG
Si potrebbe fare come un esempio: 'SUM (IF (PaymentType =" carta di credito ", TotalAmount, 0) AS CreditCardTotal,' – George