Requettes sql

Fermé
yomismo - 26 oct. 2011 à 11:05
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 26 oct. 2011 à 11:56
Bonjour,
Difficle de reprendre le SQL 10 ans apres avoir abandonné me voila face a un problème syntaxique que je n'arrive pas a résoudre!
si vous pouvez aider?
merci par avance

ci joint photo des tables

http://yomismo.free.fr/tables.jpg


c) Write a SQL statement that returns the Sum of Sales Amount grouped by Product Category.

d) Write a SQL statement that returns the Sum of Sales Amount grouped by Product Category having sales greater than 1500

e) Write a SQL Statement that returns the Distinct count of customers from the Sales table

f) Write a SQL Statement that returns a list of products that do not appear the Sales table.

merci

Michel Aquadié.
A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
26 oct. 2011 à 11:38
Bonjour,

Je donne la réponse pour la c), mais pour les autres je te laisserai chercher un peu :)

c)
SELECT p.ProductCategory, SUM(s.SalesAmount)
FROM Products p
INNER JOIN Sales s ON p.ProductID = s.ProductID
GROUP BY p.ProductCategory

d)
Là, ça dépend de l'interprétation de l'énoncé. Si le « having sales greater than 1500 » signifie que le montant total des ventes pour la catégorie doit être supérieur à 1500, il faut utiliser une clause HAVING. Si il signifie qu'il ne faut prendre en compte que les ventes dont le montant unitaire est supérieur à 1500, alors il faut utiliser une clause WHERE.

e)
Un simple COUNT DISTINCT fera l'affaire.

f)
Deux possibilités. Soit une jointure externe, puis une condition NULL sur un champ de la jointure, soit une requête imbriquée du style NOT IN.
La première est plus rapide à l'exécution, mais la deuxième plus facile à comprendre et à écrire.

Xavier
0
merci xavier

apres reflecxion jai fait cela

e
SELECT COUNT(DISTINCT Customer) from Sales

f
jai utilsie le NOT IN mais je netais pas sur

en revanche je sèche sur la D... merci quand meme

bonne journee
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 26/10/2011 à 11:58
Pour la d) c'est comme pour la c), mais en précisant soit
HAVING SUM(s.SalesAmount) > 1500
soit
WHERE s.SalesAmount > 1500.

Honnêtement, l'énoncé est ambigu et ne permet pas de décider entre les deux, qui n'ont pas le même sens. On peut se dire qu'il faut utiliser Having car ce mot est repris dans l'énoncé...

Having va donner comme résultat
Mountain Bike 2000
Road Bike 3500

Where va donner comme résultat
Mountain Bike 2000
0