Cómo unir el resultado de sum() con una consulta select.
Tengo una tabla básica de transacciones con un total de 4 columnas de la siguiente manera:
transaction_id
int(11) NOT NULL AUTO_INCREMENT,
fruit_id
int(11),
person_id
int(11),
quantity_bought
int(11),
ejemplo de consulta select *:
transactionid | fruitid | personid | quantitybought |
---|---|---|---|
1 | banana | alex | 65 |
2 | banana | joe | 25 |
3 | banana | jenny | 70 |
4 | apple | dan | 80 |
5 | apple | danny | 50 |
Se me requiere agregar la cantidad total comprada de cada fruta a cada fila de esta consulta select:
SELECT transactions.* FROM transactions;
Aquí hay un ejemplo del resultado deseado:
transactionid | fruitid | personid | quantitybought | totalquantitybought |
---|---|---|---|---|
1 | banana | alex | 65 | 160 |
2 | banana | joe | 25 | 160 |
3 | banana | jenny | 70 | 160 |
4 | apple | dan | 80 | 130 |
5 | apple | danny | 50 | 130 |
Esto es lo que intenté hasta ahora y fracasé miserablemente:
select x.* , y.total_quantity_bought
from
(SELECT *
FROM transactions) x
cross join
(SELECT fruit_id , SUM(quantity_bought) AS total_quantity_bought
FROM transactions
GROUP BY fruit_id) y
Pensé en crear una vista para las sumas de la siguiente manera, pero estoy buscando una solución que no requiera una vista:
fruitid | totalquantity_bought |
---|---|
banana | 160 |
apple | 130 |
Cualquier ayuda es apreciada.
davy.ai
Puede utilizar una subconsulta para obtener la cantidad total comprada de cada fruta:
Esto le dará el resultado deseado: