Question from the SQL - Fundamentals test

Write a SQL query to get the order_id and total number of items for each order.

Medium

Given the following 'orders' and 'order_items' tables:

orders:
| order_id | customer_id |
|----------|-------------|
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |

order_items:
| order_item_id | order_id | product_id | quantity |
|---------------|----------|------------|----------|
| 1 | 1 | 1 | 2 |
| 2 | 1 | 2 | 1 |
| 3 | 2 | 1 | 1 |

Which SQL query retrieves the order_id and total number of items for each order?

Author: Vincent CotroStatus: PublishedQuestion passed 1544 times
Edit
3
Community Evaluations
developer avatar
Anas
09/11/2023
SELECT order_id, COUNT(*) FROM order_items GROUP BY order_id; — Cette requĂȘte compterait le nombre de lignes (entries) d'articles pour chaque commande, ce qui n'est pas la mĂȘme chose que la somme des quantitĂ©s de ces articles. SELECT order_id, COUNT(order_item_id) FROM order_items GROUP BY order_id; — Semblable Ă  la premiĂšre, cette requĂȘte compterait le nombre d'identifiants d'articles par commande, qui ne correspond pas non plus Ă  la quantitĂ© totale des produits. SELECT order_id, COUNT(product_id) FROM order_items GROUP BY order_id; — Encore une fois, cette requĂȘte compterait le nombre de produits distincts par commande, sans tenir compte de la quantitĂ© de chaque produit. La bonne requĂȘte est je pense : SELECT order_id, SUM(quantity) FROM order_items GROUP BY order_id; Merci de me corriger si je me trompe. Bon courage
developer avatar
Vincent Cotro
13/11/2023
Hello Anas, c'est bon pour moi !
developer avatar
Sélomé
20/12/2023
La réponse est bien SELECT order_id, SUM(quantity) FROM order_items GROUP BY order_id ? mais dans la correction il est indiqué que c'est plutÎt : SELECT order_id, COUNT(*) FROM order_items GROUP BY order_id Quelqu'un pourrait m'expliquer en quoi avec un count(*) on peut avoir le nombre total de quantité? Merci par avance :)
developer avatar
Auteur anonyme
02/01/2024
Bonjour Sélomé, merci pour ton commentaire, il y a eu une petite confusion lors de la traduction entre FR/EN qui fait que 2 réponses ont été échangées en anglais