Question rapide si quelqu'un a le temps de répondre. La requête en cours fonctionne très bien, mais je dois également obtenir un décompte total des commandes et de l'expédition totale. Je sais que les chiffres sont rejetés à cause des jointures.Requête SQL avec nombre, somme et groupe par
Je sais que mon comte et somme sera:
count(DISTINCT orders.id) AS num_orders,
SUM(orders.shipping_cost_ex_tax) AS shipping
Je pense que je dois utiliser le compte et la somme dans la sélection et gérer le reste dans la jointure d'origine, mais pour la vie de moi Je ne peux pas comprendre ça.
Toute aide serait appréciée, même si c'est "lancer une requête séparée". Merci tout le monde.
requête actuelle:
SELECT
IF(products.categories LIKE '68', 'Shirts', 'Books') AS group_key,
CONCAT(order_products.name) AS product_name,
brands.name AS author,
SUM(order_products.quantity) AS num_units,
CASE WHEN products.sku LIKE '%-WB' THEN 'Combo'
WHEN products.sku LIKE '%-BO' THEN 'Box'
ELSE ''
END AS item_type,
SUM(IF(order_products.discount IS NULL, order_products.price_ex_tax, (order_products.price_ex_tax - order_products.discount))) AS income
FROM orders
INNER JOIN order_products ON order_products.bc_order_id = orders.bc_id
INNER JOIN products ON order_products.bc_product_id = products.bc_id
INNER JOIN brands ON products.brand_id = brands.bc_id
WHERE (orders.created_at BETWEEN '2012-01-28 00:00:00' and '2012-02-21 23:00:00')
GROUP BY group_key,
case when products.brand_id = '68'
then products.name
else products.sku
end
Quel produit SQL utilisez-vous? –
Si les jointures vous rebutent et pas toutes les autres manigances, j'essaierais de retravailler avec des sous-requêtes qui font de petites parties du travail. De même, votre 'revenue' peut être écrit' SUM (order_products.price_ex_tax - COALESCE (order_products.discount, 0)) 'et votre' CONCAT (order_products.name) 'est le même que' order_products.name'. –
Merci Daniel. J'aurais dû le savoir mais je ne l'ai pas fait. – livinginink