OK /* 1 .La liste des bureaux (adresse et ville) triés par pays décroissant puis par état */
SELECT addressLine1,addressLine2,city,country,postalCode,state
FROM offices
ORDER BY country DESC, state DESC  7 

/* 2. La liste des avions (code et nom) triés par vendeur et par quantité en stock décroissants */
SELECT productCode,productName
FROM products
WHERE productLine = "planes"
ORDER BY productVendor DESC, quantityInStock DESC
résultat : 12 


OK/* 3. La liste des produits (nom, vendeur et prix de vente) qui sont vendus au moins 132$ triés par nom du produit */
SELECT productName,productVendor,MSRP
from products
WHERE MSRP >= 132 
ORDER BY productName DESC
résultat : 24


OK/* 4. La liste des produits (code, nom, échelle et quantité) qui ont une échelle soit de 1:10, soit de 1:18 triés par quantité en stock décroissante */
SELECT productCode, productName, productScale, quantityInStock
FROM products
WHERE productScale IN ('1:10' , '1:18')
ORDER BY quantityInStock DESC
résultat : 48


OK/* 5. La liste des produits (code, nom et prix d'achat) des produits achetés au moins 60$ au plus 90$ triés par prix d'achat */
SELECT productCode, productName, buyPrice
FROM products 
WHERE buyPrice between '60' AND '90'
ORDER BY buyprice
Résultat : 34




OK/* 6. La liste des motos (nom, vendeur, quantité et marge) triés par marge décroissante */
SELECT productName, productVendor, quantityInStock,(MSRP-buyPrice) as margin
FROM products 
WHERE productLine = "motorcycles"
ORDER BY margin DESC
résultat : 13

OK/* 7. La liste des commandes (numéro, date de commande, date d'expédition, écart en jours entre les deux dates et statut) qui sont en cours de traitement ou qui ont été expédiées et ont un écart de plus de 10j triés par écart décroissant puis par date de commande */
SELECT orderNumber, orderDate, shippedDate, DATEDIFF(shippedDate, orderDate)as ecart 
FROM orders
WHERE status = "In Process" OR (status = "shipped" AND DATEDIFF (shippedDate, orderDate) > 10)
ORDER BY ecart DESC, orderDate 
resultat : 7 


OK/*8. La liste des produits (nom et valeur du stock à la vente) des années 1960 */
SELECT productName, (MSRP*quantityInStock) as stockValue
FROM products 
WHERE productName LIKE "%196%"
resultat : 16 

OK/* 9.Le prix moyen d'un produit vendu par chaque vendeur triés par prix moyen décroissant */
SELECT AVG(MSRP) as average, productVendor
FROM products 
GROUP BY productVendor
ORDER BY average DESC
resultat : 13 

OK/* 10.Le nombre de produits pour chaque ligne de produit */
SELECT COUNT(productCode), productLine
FROM products 
GROUP BY productLine
résultat: 7 


OK /* 11.Le total du stock et le total de la valeur du stock à la vente de chaque ligne de produit pour les produits vendus plus de 100$ trié par total de la valeur du stock à la vente */

SELECT SUM(quantityInStock), SUM(MSRP*quantityInStock) as stockValue, productLine
FROM products 
WHERE MSRP > 100
GROUP BY productLine
ORDER BY stockValue
resultat 7 

OK/* 12. La quantité du produit le plus en stock de chaque vendeur trié par vendeur */
SELECT MAX(quantityInStock), productVendor
FROM products 
GROUP BY productVendor
ORDER BY productVendor
résultat : 13 

SELECT MAX(quantityInStock), productVendor, productLine
FROM products 
GROUP BY productVendor, productLine
ORDER BY productVendor
résultat : 65



OK/* 13. Le prix de l'avion qui coûte le moins cher à l'achat */
SELECT MIN(buyPrice)
FROM products 
WHERE productLine = "planes"
résultat 1 


/* 14 .Le crédit des clients qui ont payé plus de 20000$ durant l'année 2004 trié par crédit décroissant */
SELECT creditLimit, YEAR(2004), amount
FROM customers
INNER JOIN payments ON payments.customerNumber = customers.customerNumber
WHERE amount > 20000 
ORDER BY creditLimit DESC
résultat 195



/* 15. La liste des employés (nom, prénom et fonction) et des bureaux (adresse et ville) dans lequel ils travaillent */

SELECT employeeNumber, FirstName, LastName, jobTitle, addressLine1, addressLine2,city
FROM employees
INNER JOIN offices ON offices.officeCode= employees.officeCode
résultat : 23
 


/* 16. La liste des clients français ou américains (nom du client, nom, prénom du contact et pays) et de leur commercial dédié (nom et prénom) triés par nom et prénom du contact */
SELECT customerName, contactLastname, contactFirstName,country, customerNumber, employeeNumber,firstName, lastName, salesRepEmployeeNumber 
FROM customers
INNER JOIN employees ON customers.salesRepEmployeeNumber = employees.employeeNumber
WHERE country = "France" AND country = "USA"
ORDER BY contactLastName and contactFirstName





/* 17. La liste des lignes de commande (numéro de commande, code, nom et ligne de produit) et la remise appliquée aux voitures ou motos commandées triées par numéro de commande puis par remise décroissante */

/*quelle remise : dans quelle table la trouve t'on?*/ 


/* 18. Le total des paiements effectués de chaque client (numéro, nom et pays) américain, allemand ou français de plus de 50000$ trié par pays puis par total des paiements décroissant */
SELECT amount, customerName, customers.customerNumber, country
from payments
INNER JOIN customers ON payments.customerNumber = customers.customerNumber
WHERE country = "USA" AND country = "GERMANY" AND country = "FRANCE" AND amount > 50000
ORDER BY country, amount DESC 




/* 19.Le montant total de chaque commande (numéro et date) des clients New-Yorkais (nom) trié par nom du client puis par date de commande */

