Hi allemaal,
Ik ben bezig met geknutsel aan een proefprojectje om mysql te leren maar ik kom niet uit aan het volgende:
In mijn database heb ik kolom die date heet en uiteraard een hoop rijen met de datums uiteenlopend van april tm september. Nu wil ik graag weten hoeveel rijen er elke maand voorkomen en dit plotten in de volgende grafiek. Ik weet helaas niet welke query ik moet gebruiken om de count by month/year te krijgen.
Daarnaast mag hij alleen de data van dit jaar laten zien verdeeld over 12 maanden.
- SQL vraagje - count + group by month
-
20-09-2016, 23:55 #1Particulier
- Berichten
- 1.730
- Lid sinds
- 16 Jaar
SQL vraagje - count + group by month
-
In de schijnwerper
-
21-09-2016, 00:56 #2Particulier
- Berichten
- 1.730
- Lid sinds
- 16 Jaar
Re: SQL vraagje - count + group by month
het is al gelukt :)
SELECT LOWER(MONTHNAME(date)), count(*) FROM table GROUP BY LOWER(MONTHNAME(date))
-
21-09-2016, 09:19 #364BitsWebhosting.EU
- Berichten
- 2.092
- Lid sinds
- 17 Jaar
Re: SQL vraagje - count + group by month
Ik zou wel het jaar nog erin meenemen zodat ie niet de maanden van elk jaar samenvoegt.
Een snellere optie is om een een kolom erbij te maken 'jaarmaand' met alleen het jaar en de maand erin. Die kolom kun je dan indexeren en dat is een stuk sneller dan een query met 5 functies.
-
21-09-2016, 09:30 #4Particulier
- Berichten
- 1.730
- Lid sinds
- 16 Jaar
Re: SQL vraagje - count + group by month
Zolang je niet veel data in je tabel hebt gaat dit wel werken.
Ik zou wel het jaar nog erin meenemen zodat ie niet de maanden van elk jaar samenvoegt.
Een snellere optie is om een een kolom erbij te maken 'jaarmaand' met alleen het jaar en de maand erin. Die kolom kun je dan indexeren en dat is een stuk sneller dan een query met 5 functies.
-
21-09-2016, 10:47 #564BitsWebhosting.EU
- Berichten
- 2.092
- Lid sinds
- 17 Jaar
Re: SQL vraagje - count + group by month
Eenmalig een veldje toevoegen int(6) aan je tabel.
update tabel set jaarmaand = YEAR(date) * 100 + MONTH(date).
Daarna kun je bij elke insert/update van die datum tegelijk het nieuwe veldje wijwerken, of je doet dat via een mysql trigger of whatever.
select jaarmaand, count(*) as aantal from tabel where jaarmaand > 201509 group by jaarmaand order by jaarmaand
Als je dan in php een tabel hebt met de maandnamen in je gewenste taal kun je eenvoudig de naam van de maand ophalen met 0,0 performance verlies terwijl je wel die mysql functies uit je query hebt.
Maar ja, er gaan meerdere wegen naar Rome :)
Succes!
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic