J'essaie d'écrire sql où je peux retourner le montant pour chaque jour en utilisant groupBy par DATE.

Mes champs sont amount et transaction_date et mon sql est:

select id,    
Amount as amount,    
transactionDate as transaction_date      
from transaction    
WHERE transactionDate IN (SELECT DISTINCT TOP 7 transactionDate from transaction
order by transactionDate)

Donc, ma syntaxe SQL est incorrecte et je ne peux pas comprendre quoi faire ensuite.

0
Jhonas 20 nov. 2018 à 15:15

3 réponses

Meilleure réponse

Essayez ci-dessous

select date(transactionDate) as transaction_date  
sum(Amount) as amount           
from transaction    
WHERE date(transactionDate)>=  DATE_ADD(current_date(),INTERVAL -7 DAY)
group by date(transactionDate)

BTW Top est un mot clé de serveur SQL pas pour mysql

0
Zaynul Abadin Tuhin 20 nov. 2018 à 12:24

Merci à tous, vous me donnez un chemin que je peux aller et finir. J'ai trouvé la solution. Merci beaucoup.

 SELECT
 DATE(transaction_date) AS TransactionDate, SUM(amount) AS Amount
 FROM transaction
 WHERE type = 'spend'
 AND transaction_date>=  DATE_ADD(NOW(), INTERVAL -7 DAY)
 GROUP BY TransactionDate
-1
Jhonas 20 nov. 2018 à 12:29

Utiliser l'agrégation et grouper par

select transactionDate     
sum(Amount) as amount,    
from transaction  
where transactionDate>=cast(now()-INTERVAL -7 DAY as date) and transactionDate<cast(now() as date)
group by transactionDate 
0
Fahmi 20 nov. 2018 à 12:23