Heb een probleem met een query en ik kom er zo 123 niet uit. Ik heb 3 tabellen:
customers
products
sales
Ik wil per emailadres uit customers het totaal aantal producten berekenen (een count van het aantal rijen in sales), en de totale omzet (aantal rijen in sales * price in products).
Nu heb ik bijna wat ik wil:
Het enige probleem is dat ik ze niet gegroepeerd krijg per email adres. Ik wil dat de klant michael@email.com een omzet van 260000 genereerd, in plaats van 2 losse rijen.
Mijn query is als volgt:
Als ik een group by c.email doe dan pakt hij alleen 1 rij die hij vindt van bij klant maar dit is niet wat ik wil (ik wil het totaal van alle rijen in sales):
Hoe kan ik dit voor elkaar krijgen?
customers
products
sales
Ik wil per emailadres uit customers het totaal aantal producten berekenen (een count van het aantal rijen in sales), en de totale omzet (aantal rijen in sales * price in products).
Nu heb ik bijna wat ik wil:
Het enige probleem is dat ik ze niet gegroepeerd krijg per email adres. Ik wil dat de klant michael@email.com een omzet van 260000 genereerd, in plaats van 2 losse rijen.
Mijn query is als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| select c.email, total_products, revenue from customers c left join (select product_id, email, count(product_id) as total_products, products.price * count(sales.product_id) as revenue from sales, products where products.id = sales.product_id group by sales.product_id, email ) s on s.email = c.email left join ( select products.id as product_id, products.name as product_name from products group by products.id ) p on p.product_id = s.product_id |
Als ik een group by c.email doe dan pakt hij alleen 1 rij die hij vindt van bij klant maar dit is niet wat ik wil (ik wil het totaal van alle rijen in sales):
Hoe kan ik dit voor elkaar krijgen?