Hallo allemaal,

Ik heb een ordertabel met daar in een veld [ordernummer] en een veld [aantal] voor het aantalgekochte producten (per record). In principe staat deze altijd op 1 maar er kunnen meer records zijn met het zelfde ordernummer als de koper meer producten afneemt.
Nu wil ik een query bedenken die voor mij in één slag het gemiddeld aantal gekochte producten in een meetperiode toont.
Je krijgt dan zoiets als (dit werkt dus niet):



SELECT
   SUM(aantal) AS aantal_gekocht,
   COUNT(DISTINCT(ordernummer)) AS orderaantal,
   aantal_gekocht/orderaantal AS gemiddeld
FROM
   shop_bestellingen
WHERE
   MONTH(besteldatum) = 7 AND YEAR(besteldatum) = 2013



Hoe krijg ik deze query nu wel werkend?


George
mysql heeft een functie avg misschien kan je die gebruiken
Maar die werkt niet in combinatie met de distinct
Je kan geen kolomalias in een select list gebruiken.
Dus je moet dan:

SELECT
	SUM(aantal) AS aantal_gekocht,
	COUNT(DISTINCT(ordernummer)) AS orderaantal,
   	SUM(aantal) / COUNT(DISTINCT ordernummer) AS gemiddelde
FROM
	shop_bestellingen
WHERE
	besteldatum BETWEEN '2013-07-01' AND '2013-07-31'

Let op wat ik gedaan heb met de where clause, gebruik daar indien mogelijk geen bewerkingen op een kolom in,
het verschil tussen een full table scan of een index gebruiken.

Reageren