-------------- REQUÊTES DE BASES

-- il dit sur quelle base de données on travaille. Il change la base par défaut.

-- A. Affichage des colonnes et des lignes 
-- A.1 Je souhaite afficher toutes les colonnes de la table dimcustomer
-- Résultats : 18484 lignes

-- A.2 Je souhaite afficher toutes les colonnes mais que pour les 100 premières lignes

-- A.3 Je souhaite afficher les 75 premières lignes mais que la colonne emailaddress

-- A.4 Je souhaite afficher les 50 premières lignes mais que les colonnes emailaddress et commuteDistance

-- B.1 Afficher les frencheducation des clients
-- Résultat : 5 niveaux d'études différents

-- B.2 Afficher les frencheducation et frenchoccupation des clients
-- Résultat : 25 lignes

------ Exos en plus, si vous avez de l'avance sur le groupe :
-- B3. Afficher les 1000 premiers clients (prenom, nom, birthdate, yearlyincome, totalchildren)

-- B4. Afficher les différents types de salaire (yearlyincome) des clients
-- Résultats : 16

-- B5. Afficher les différents types de salaire (yearlyincome) des clients 
-- ainsi que la colonne sui permet de savoir s'ils sont propriétaires d'une maison (houseownerflag)
-- Résultats : 32 (concaténations de yearlyincome et houseownerflag différents)

-----------------------------------------------------------------------------------------------------------------------------------------
-- C.1 Afficher et renommer la colonne lastname en "nom" 

-- C.2 Afficher et renommer en plus, la colonne firstname en "prénom du client"

-- C.3 Afficher et renommer en plus, la colonne emailaddress en "L'adresse email"

-- D.1 Même requête que C3 mais avec ajout d'un tri ascendant sur le nom de famille

-- D.2 Même requête que D1 mais avec ajout d'un tri descendant sur le prénom

------ Exos en plus - si vous avez de l'avance sur le groupe : 
-- D.3 : copier/coller le B3 et supprimer le TOP1000 // 
-- Si vous ne l'aviez pas fait, voici la requête sur laquelle repartir :
select firstname, lastname, BirthDate, yearlyincome, totalchildren
From dimcustomer
-- Renommer les colonnes avec nom en français (prénom, nom, date de naissance, salaire, nombre d'enfants)
-- résultats : 18 484

-- D.4 : trier les résultats du D3 par ordre décroissant sur le yearlyincome, 
-- puis sur le totalchildren par ordre décroissant
-- puis sur la date de naissance par ordre croissant
-- résultats : 18 484

----------------------------------------------------------------------------------------------------------------------------------------
-- E.1 Afficher seulement les lignes correspondantes aux clients
-- qui sont des hommes (M dans gender) et qui sont mariés (M dans marital status)
-- résultat : 5266

-- E.2 Pareil que la E.1 mais avec une condition en plus
-- Quand le yearlyincome est supérieur à 60 000
-- résultat : 2026

-- E.3 Pareil que la E.2 mais avec une condition en plus
-- quand la date de naissance est supérieure ou égale au 01 janvier 1980
-- résultat : 179

-- E.4 Pareil que la E.3 mais avec une condition en plus
-- Quand le prénom du client n'est pas jonathan
-- Trier par ordre alphabétique les prénoms
-- résultat : 176

------ E.4 Bis Exos en plus si vous avez de l'avance sur le groupe
-- E.4.b Nouvelle requête : Je souhaite les femmes, cadres (frenchoccupation)
-- qui n'ont pas le niveau d'étude bac + 4 (frencheducation)
-- qui sont propriétaires de 3 voitures ou plus (numbercarsowned)
-- Résultats : 423

-- E.4.c Reprendre le E.4.b
-- Je souhaite afficher leur prénom, leur nom, leur date de naissance, leur situation familiale (maritalstatus) et leur salaire (yearlyincome)
-- Résultats : 423

-- E.4.d Reprendre le E.4.c
-- Renommer yearlyincome en salaire et date de naissance également
-- trier par salaire décroissant puis par date de naissance décroissant
-- afficher que les 5 premiers résultats de cette requête :)
-- Résultats : 5

---------------------------------------------------------------------------------------------------------------------------------------------------
-- E.5 Afficher seulement les lignes correspondantes aux clients
-- qui ont un niveau d'étude soit Bac + 4 soit bac + 3 (attention aux espaces avant et après le +)
-- Résultat : 8 545

-- E.6 Pareil que E.5 mais avec nouvelle condition
-- Clients qui ne sont ni ouvriers ni employés (vérifier les données dans la table, il n'y a peut-être pas de s ou autres)
-- Résultat : 7 277

------ E.6 bis Exos en plus si vous avez de l'avance sur le groupe
-- E.6.b Nouvelle requête : Je souhaite les clients qui ont 2 ou 3 enfants (totalchildren)
-- Résultats : 5973

-- E.6.c Reprendre E.6.b : 
-- Je souhaite rajouter ceux qui n'ont pas 1 ou 2 voitures (numbercarsowned)
-- Résultats : 1793

-- E.6.d Reprendre E.6.c : 
-- Je souhaite rajouter ceux qui ont comme nom de famille Alvarez, Baker, Bennett, Yang et Lee
-- Résultats : 41

-------------------------------------------------------------------------------------------------------------------------------
-- E.7 Afficher seulement les lignes correspondantes aux clients
-- dont la frencheducation contient un +
-- Résultat : 11839

-- E.8 Pareil que E.7 mais avec condition en plus
-- Clients dont leur prénom ne commence pas par Je
-- Résultat : 11524

------ E.8 bis Exos en plus si vous avez de l'avance sur le groupe
-- E.8.b Nouvelle requête : Je souhaite les clients dont leur englisheducation contient partial en début de valeur
-- Résultats : 6645

-- E.8.c Reprendre E.8.b avec condition en plus :
-- Je souhaite uniquement les clients dont l'adresse contient DR (addressline1)
-- Résultats : 1316

--------------------------------------------------------------------------------------------------------------------------------
-- E.9 Afficher les noms des clients ainsi que leur âge
-- quand ils sont nés entre 1970 et 1979 inclus (utiliser la fonction year() )
-- Résultat : 6353

-- E.10 Pareil que E.9 mais avec condition en plus
-- Les clients qui ont entre 2 et 4 enfants (2 et 4 inclus : colonne totalchildren)
-- Résultat : 2082

-- E.11 Pareil que E.10 mais avec condition en plus
-- Quand la colonne middleName est renseignée : is not null
-- Résultat : 1211

------ Exos en plus si vous avez de l'avance sur le groupe
-- E.12 Je souhaite les hommes mariés
-- qui ont entre 1 et 3 enfants
-- dont le salaire est supérieur ou égal à 50000
-- dont la frencheducation ne contient pas le mot niveau
-- dont le frenchoccupation est cadre ou technicien
-- quand la date du premier achat (datefirstpurchase) est entre 2012 et 2013 inclus
-- Résultat : 999 lignes

-- E.13 Je souhaite afficher les lignes clients correspondantes à deux profils différents :
-- ceux qui ont seulement le bac (valeur "baccalauréat") (frencheducation) et qui sont à 5-10 miles du travail (commutedistance)
-- ainsi que ceux qui sont bac + 4 et qui sont à 1-2 miles
-- Résultat : 1706
-------------------------------------------------------------------------------------------------------------------------------------------------
-- F.1 Compter le nombre de clients
-- PAR frencheducation et frenchoccupation
-- PUis trier par frencheducation (asc) et nombre de clients (desc)
-- Résultat : 25 

-- F.2 Compter le nombre de clients 
-- par gender et maritalstatus
-- Puis trier par gender (asc) et maritalstatus (asc)
-- Résultat : 4

------ Exos en plus si vous avez de l'avance sur le groupe
-- F.3 : Sur la table DIMRESELLER (les revendeurs qui vendent les produits de notre entreprise)
-- je souhaite compter le nombre de revendeurs
-- par banque et nombre d'employés (colonnes bankname et numberemployees)
-- puis trier par banque (asc) et nombre d'employés desc
-- Résultats : 494

-- F.4 : Sur la table DIMRESELLER (les revendeurs qui vendent les produits de notre entreprise)
-- je souhaite compter le nombre de revendeurs
-- par type de business et ligne de produit (colonnes businesstype et productline)
-- trier par productline asc puis par nombre de revendeurs desc
-- Résultats : 9

----------------------------------------------------------------------------------------------------
-- G.1 Repartir sur requête du F.1 puis conditions en plus
-- Seulement pour les clientes
-- Quand le nombre de clientes est inférieur à 100
-- Résultat : 6

-- G.2 Repartir sur requête du F.2 puis conditions en plus
-- quand le salaire est supérieur ou égal à 40000
-- et quand le nombre de clients est supérieur à 3000 
-- Résultat : 2

-- G.3 Découvrir la table FactInternetSales
-- Compter le nombre de lignes avec count(*) : nom de colonne : nb de lignes
-- et calculer la somme des ventes (salesamount = fonction sum)
-- par année et par mois de vente (orderdate)
-- trier par ordre décroissant les années puis les mois (ascendant)
-- Résultat : 38
Select year(orderdate) as année, month(orderdate) as mois,
		count(*) as 'nombre de lignes',
		sum(salesamount) as 'somme des ventes'
from FactInternetSales
group by year(orderdate), month(orderdate)
order by année desc, mois 

-- G.4 Reprendre G.3 mais avec conditions en plus
-- quand l'unitprice est entre 500 et 3000 
-- et que le numéro de produit est soit 320, 326, 330, 338 , 342
-- que le nombre de lignes est supérieur à 8
-- que la somme des ventes est entre 6990,982 et 8389,1784
-- Résultat : 5

------ Exos en plus si vous avez de l'avance sur le groupe
-- G.5, reprendre la requête F.3.
-- Si vous ne l'aviez pas faite, voici son résultat à récupérer pour pouvoir faire l'exercice G.5 :
Select bankname, NumberEmployees, 
		count(ResellerKey) as 'nombre de revendeurs'
From Dimreseller
group by bankname, NumberEmployees
order by bankname, NumberEmployees desc

-- Enoncé G.5 : On souhaite filtrer le résultat
-- sur les banques ayant le mot international à l'intérieur = International Bank, International Security, Primary International
-- Puis filtrer sur le résultat, quand le nombre de revendeurs est égal ou supérieur à 3
-- Résultats : 23

-- G.6, reprendre la requête F.4 
-- Si vous ne l'aviez pas faite, voici son résultat à récupérer pour pouvoir faire l'exercice G.6 :
Select BusinessType, ProductLine, 
		count(ResellerKey) as 'nombre de revendeurs'
From Dimreseller
group by BusinessType, ProductLine
order by ProductLine asc, [nombre de revendeurs] desc

-- Enoncé G.6 : On souhaite filtrer le résultat
-- sur les reseller ayant un revenu annuel (annualrevenue) inférieur ou égal à 100000
-- Et dont le nombre de revendeurs est égal ou supérieur à 80
-- Résultats : 2

-------------------------------------------------------------------------------------------------------------------------------
-- H.1 Sur la table dimcustomer
-- afficher les noms et prénoms des clients
-- et créer une nouvelle colonne qui indique le type de famille du client
-- si pas d'enfants alors 'pas d'enfants', si moins de 3 enfants 'famille moyenne', si 3 ou plus 'famille nombreuse'
-- Résultat : 18484

-- H.2 Pareil que pour H.1
-- Mais il faut compter le nombre de clients par type de famille
-- Résultat : 3

-- H.3 Exercice en plus - SEULEMENT POUR LES PLUS AVANCES
-- Nombre de clients par tranche d'âge 
-- Créer les tranches d'âges : moins de 40 ans 'jeunes', moins de 60 'matures', 
-- moins de 80 'sages', plus ou égal à 80 'vieux'
-- trier par nombre de clients (ordre descendant)
-- Résultat : 4 lignes

-----------------------------------------------------------------------------------------
-- I.1 Sur la table FactInternetSales
-- Je souhaite afficher la somme des ventes (salesamount), 
-- la moyenne des taxes (taxamt), 
-- le fret minimum (freight) 
-- et le prix max à l'unité (unitprice) pour toutes commandes confondues
-- Résultat : 1

-- I.2 Pareil que le I.1
-- Mêmes calculs mais PAR année, par trimestre et par mois d'ordre de commande (orderdate)
-- Résultat : 38

-- I.3 Pareil que le I.2 mais avec conditions et tris
-- quand la taxe moyenne est inférieur à 200
-- quand le coût total de production (totalproductcost) est supérieur à 500
-- quand le jour d'envoi est entre le 10 et le 20 du mois - shipdate
-- quand le fret min est entre 28 et 85
-- puis trier par somme des ventes descendant
-- Résultat : 12

-- I.4 Nouvelle requête : Compter le nombre de produits différents vendus
-- Résultat : 158 (et non pas 60398 qui correspond au nombre de commandes)

------ Exo en plus : 
-- I.5 Sur la table clients (dimcustomer)
-- Afficher seulement les 3 derniers caractères du customeralternatekey
-- Puis les deux premières lettres de englishoccupation
-- Puis dans la colonne customeralternatekey : à partir du 6ème caractère, prendre 2 caractères
-- Afficher le nom du client entièrement en majuscule
-- Afficher la colonne frencheducation et supprimer espaces avant et après la valeur
-- Résultat : 18 484

-- I.6 Sur la table FactResellerSales -- Attention au nom de la table, contient bien Reseller à l'intérieur :)
-- Calculer le nombre de commandes et le nombre de revendeurs différents ayant participé à ces commandes
-- résultats : 3796 pour les commandes et 635 pour les revendeurs

-- I.7 : Suite du I.5
-- Je souhaite regrouper par quantité commandée (orderquantity)
-- Afficher en premier la colonne des quantités commandées
-- Filtrer sur l'année de commande 2013 (orderdate)
-- Filtrer uniquement quand le nombre de commandes est supérieur ou égale à 10
-- et que le nombre de revendeurs est supérieur à 100
-- Puis trier par quantité vendue décroissant
-- résultats : 10 lignes


