coincoins

Titre

SQL, Base webStat, statistiques de visites
Présentation

Lorsqu'on navigue sur le net, sur les sites commerciaux, on laisse toujours des traces, à l'insu de notre plein gré!

Voici un petit exemple de base de données où des internautes ont laissé des traces sur un site marchand.

Voyons voir si vous êtes capable de répondre aux questions qui pourraient se poser l'analyse du comportement de l'utilisateur.

Vous pouvez vous-même imaginer différentes recherches pour produire des données à afficher, des croisements de comportement commercial.

Vous avez le droit d'être politiquement incorrect, les sites, souvent basés à l'étranger ne se gènent pas pour autant et font souvent appel à des société spécialisées en analyses de comportement commercial.

J'espère vous faire réfléchir en vous proposant cet exercice, sur les capacité des sites commerciaux à tracer votre comportement.

Dans un avenir proche, je vais faire pareil et vous montrer comment ça marche (anonymement, bien sûr).

Vous pouvez télécharger la base de données au format Access (webStat.mdb)ou mysql (webStat.sql à importer).

N'oubliez pas qu'internet est votre ami ...

A vous de jouer.

Note : la base est (presque) vide, vous pouvez la remplir comme vous le sentez, pour faire des tests.

Schéma relationnel de la base

La base de données est architecturée de la façon suivante :

Nous avons 11 tables (en gras les ppales, en italique, les associations) :

  • Le client a acheté des produits,
  • Ces produits appartiennent à des catégories de produits (ski, fixations, snow, chaussures, bâtons ; on peut gérer autre chose ...),
  • Un cookie ou "tracker", déposé sur l'ordi d'un utilisateur, permet de tracer deux choses :
    • la visite de pages qui appartiennent à un certain type de page (produit, faq, liste, promo, etc. ...) pour avoir des stats sur la fréquentation du site
    • l'observation de produits pour avoir des stats sur le comportement commercial
    • le navigateur utilisé, pour avoir une info technique
    • remarquer le champ adrIP, pour avoir une autre info technique (il peut y avoir plusieurs cookies sur la même IP => même utilisateur ? Bonne question, hein ?)
  • Il nous reste identifier qui, après avoir passé la commande, permet de maintenir la connexion entre le site et le client via l'association du cookie et de l'utilisateur. C'est là qu'on saura à qui afficher des pubs ciblées ...

Top of page

Les questions (enfin!)

Série 1 : gentilles

  • 1-01 Quelle est la liste des enregistrements de la table produit ?
  • 1-02 Quelle est la liste des produits de moins de 1Kg
  • 1-03 Quelle est la liste des désignations des produits ?
  • 1-04 Quelle est la liste des désignations des produits entre 15 et 50 euros ?
  • 1-11 Quelle est la liste des clients ?
  • 1-12 Quelle est la liste des clients de Strasbourg ?
  • 1-13 Quelle est la liste des clients de Strasbourg ou de Molsheim ?
  • 1-14 Quelle est la liste des clients de Strasbourg, de Molsheim et Saverne ?
  • 1-21 Quelle est la liste des clients, triée par ville, nom et prénom ?
  • 1-22 Quelle est la liste des id, designation et prix HT des produits, classée par prix décroissant ?

Mots clés utilisés : SELECT, FROM, WHERE, ORDER BY, DESC, OR, AND, BETWEEN, IN et les opérateurs de comparaison

Série 2 : fréquentation du site

Liste et regroupements (12 requêtes)

  • 2-01 Combien y a-t-il de pages web ?
  • 2-02 Combien y a-t-il de pages de Front Office (Access:FrontOffice=-1 ; mysql, frontOffice="f") ?
  • 2-03 Quels sont les noms des pages visitées ce mois-ci (nom page, id page, idCookie) ? (nécessite : DISTINCT, YEAR(), MONTH() et CURDATE())
  • 2-04 Donner la liste des noms de page, id de page et numéro de cookie (attention, pas l'identifiant du cookie).
  • 2-11 Combien y a-t-il de visite ce mois-ci ?
  • 2-12 Combien y a-t-il de visites par page ce mois-ci, donner l'idPage et le nombre de visites ?
  • 2-21 Combien de visites sont effectuées par cookie, donner l'id et le nombre de visites.
  • 2-22 Combien de visites sont effectuées par cookie, donner le numéro de cookie et le nombre de visites.
  • 2-23 Donner la liste des numéros de cookie et d'id de page visitées en éliminant les doublons.
  • 2-24 Refaire la requête 2-22 en utilisant la requête 2-23 à la place de visiter. Qu'obtient-on ?
    (requête imbriquée dans FROM, c'est possible!)
  • 2-31 Quelle est le nombre moyen de visites par page ? (requêtes imbriquées)
  • 2-32 Combien de visites ont eu lieues sur les pages de type FAQ ?
  • 2-33 Quel est le chiffre d'affaire hors taxe par client cette année (donner l'id client, son nom, son prénom et le CAClient)?

Mots clés utilisés : ceux de la série 1 et : DISTINCT, COUNT(*), AVG, GROUP BY

Série 3 : Analyse commerciale

La difficulté réside dans la requête ... ou dans la question!

Imbrication : utilisation du résultat d'une sous-requête pour obtenir une valeur ou une liste servant à une comparaison dans la requête cadre.

  • 3-01 Combien y a-t-il de cookie de clients identifiés strasbourgeois (+/-simple) ?
  • 3-02 Quelles sont les id des personnes strasbourgeoises qui ont consulté plus de 10 produits ce mois-ci ? (on leur enverra une promo-initation à l'achat)
  • 3-03 Quelle est la moyenne des consultations par cookie ?
  • 3-04 Combien de personnes par mois ont consulté l'article 1 ?
  • 3-05 Combien de personnes par mois ont acheté l'article 1 ?
  • 3-11 Quels sont les id des 10 articles les plus consultés ? (utiliser la clause LIMIT avec mysql)
  • 3-12 Parmi les articles consultés, quels sont les id de ceux qui n'ont pas été achetés ? (utiliser IN et une requête imbriquée)
  • 3-13 est-il possible de faire une seule requête avec les deux précédentes ?
  • 3-14 Combien de personnes ont consulté l'article 1, en fonction du département ?
  • 3-15 Quels sont les autres id des produits consultés par des clients non identifiés (cookies) qui ont consulté le produit id=123 que je consulte (num de mon cookie=456) ?
    Cette requête permet d'afficher le rubrique : "les autres clients ont aussi consulté ces articles ..."
    ou : "Ces articles pouraient aussi vous intéresser ..."

Top of page

Corrigés ???

Série 1 : Gentilles

Série 2 : Fréquentation

Série 3 : difficiles (très)

Top of page