Query voor berekenen gemiddeld aantal producten per order
George van Baasbank
28/07/2013 21:06:55Hallo 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):
Hoe krijg ik deze query nu wel werkend?
George
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):
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
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
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
Gewijzigd op 28/07/2013 21:23:32 door George van Baasbank
PHP hulp
30/12/2024 15:29:53Francoi gckx
29/07/2013 01:01:59George van Baasbank
29/07/2013 08:51:52Je kan geen kolomalias in een select list gebruiken.
Dus je moet dan:
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.
Dus je moet dan:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
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'
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.