2017-04-22 7 views
0

Also, ich versuche, einige Statistiken für ein Projekt zu machen. Ich versuche, die Daten für den Monat von diesem Jahr mit dem gleichen Monat des letzten Jahres zu vergleichen.MySQL SELECT dieses Jahr vs thist Zeit im letzten Jahr

Beste, was ich jetzt habe, ist diese

 
SELECT COUNT(tappe_id) FROM tappesesjon WHERE YEAR(tappedato) = YEAR(CURDATE()) GROUP BY MONTH(tappedato) DESC; 
SELECT COUNT(tappe_id) FROM tappesesjon WHERE YEAR(tappedato) = YEAR(CURDATE() - INTERVAL 1 YEAR) GROUP BY MONTH(tappedato) DESC; 

aber es tut wirklich der Trick

EDIT: Die erste Abfrage gibt mir die ammount von „Sitzungen“ während jeden Monat in diesem Jahr, und der zweite gibt mir dasselbe für letztes Jahr. Was ich will, ist eine Möglichkeit, um zu sehen, wie viele Sitzungen gab es Januar dieses Jahres als Januar letzten Jahres. Ich hoffe, das etwas Licht auf meine Frage wirft

EDIT2:
tappe_id tappedato person_nr 1 2016-04-22 1231231231 2 2017-04-22 1231231231 3 2017-05-01 1231231231 4 2016-05-01 1231231231 5 2017-04-23 1231231231 6 2016-05-01 1231231231 7 2017-07-12 1231231231 8 2016-07-07 1231231231 9 2017-08-12 1231231231 10 2016-07-07 1231231231

+0

Sie müssen einen besseren Job zu erklären, was genau zu tun, den Trick nicht tun . Zeigen Sie uns, was dies liefert und was Sie erwarten. – mickmackusa

Antwort

0

Von meinem Verständnis Ihrer Frage ist, dass Sie den Unterschied zwischen der Anzahl der Sitzungen in curr Jahr und vergangenen Jahr pro Monat wissen wollen .

Hier ist meine Lösung für oben erwähnte Problem,

SELECT COUNT(a.tappe_id) - COUNT(b.tappe_id) 
FROM tappesesjon a, tappesesjon b 
WHERE YEAR(a.tappedato) = YEAR(CURDATE()) 
    AND a.tappedato = DATE_ADD(b.tappedato, INTERVAL 1 YEAR) 
GROUP BY MONTH(a.tappedato); 
+0

irgendwie, als ich versuchte, diese Abfrage zu verwenden, gab es null (ja, ich korrigierte curdate zu curdate) – Yuven

+0

Sorry über die CURDATE-Fehler. –

+0

Können Sie einige Datenzeilen in Ihrer Tabelle angeben. –

0

Sie bedingte Aggregation verwenden kann:

SELECT MONTH(tappeddato), 
     SUM(YEAR(tappedato) = YEAR(CURDATE())) as cnt_current, 
     SUM(YEAR(tappedato) = YEAR(CURDATE()) - 1) as cnt_lastyera, 
FROM tappesesjon 
WHERE YEAR(tappedato) IN (YEAR(CURDATE()), YEAR(CURDATE()) - 1) 
GROUP BY MONTH(tappedato) DESC; 
+0

"# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe entspricht" als cnt_current, SUM (YEAR (tappedato) = YEAR (CURDATE() - 1) als cnt_lastyera 'bei Zeile 2 " kann nicht finden, was hier falsch ist. Ich habe nur SQL für ein paar Monate gelernt – Yuven

Verwandte Themen