IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Nombre de lignes avec un filtre de date


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Nombre de lignes avec un filtre de date
    Bonjour,

    Je me permets de solliciter votre aide sur une requête sur laquelle je bloque sérieusement..

    J'ai une table avec plusieurs dates. On va dire Date A et Date B.
    Et je voudrais compter le nombre de lignes ayant la date A et ayant la date B par jour (un filtre en somme) de cette façon :
    Date_Filtre, Nb_ligne_Date_A, Nb_ligne_Date_B

    J'ai tenté de jouer sur des jointures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select date(A.date) as Filtre, (count(B.id)) as Nb_ligne_Date_B from Table_A A left join Table_B B on date(A.date) = date(B.dateR) limit 1;
    Et aussi en ajoutant 2 jointures sur ce qui est finalement la même table mais le temps de la requête est excessivement lent.. Je pense que je me trompe dans la méthode pour monter ma requête.


    Merci pour votre aide

  2. #2
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Je rajoute quelques informations,

    Ma table fait 150 000 entrées et grossit à raison de 50000 annuellement.. Et c'est une Bdd MariaDB.

    Et lorsque j'aurais réussi à faire cette requête, il me faudra rajouter une dernière colonne qui se trouve dans une autre table "categorie"

    Au final, cela devra donner :

    - Date_filtre
    - Nb Ticket Date A
    - Nb Ticket Date B
    - Catégorie

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Pouvez-vous fournir un petit jeu de données ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Il est normal que votre requête dure longtemps en particulier sur MySQL / mariaDB dont l'optimiseur est le plus mauvais de tous. En effet, pour optimiser une jointure il faut deux conditions :
    1) un index sur les données
    2) aucune transformation des données jointes.

    Le point 2 n'est pas respectée car vous transformez un horodatage en date. Il n'y aura pas d'utilisation d'index.

    Sur certains SGBDR intelligent, cette transformation est accepté par l'optimiseur car il récrit la requête pour profiter quand même de l'index. C'est en particulier le cas de Microsoft SQL Server...

    Tout est dans le "gratuit".... Quand c'est gratuit, ça couter cher d'autre part ! Notamment en termes de performances ou MySQL est l'un des plus lent....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Avec si peu d'info ce n'est pas évident de répondre.

    Quelque chose comme ça peut-être (Fiddle) ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select 'a',date_jour,date_a, count(date_a) from test group by date_jour,date_a
    union
    select 'b',date_jour,date_b, count(date_b) from test group by date_jour,date_b
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2021
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous et merci pour vos réponses..

    J'ai effectivement trouvé une solution en réalisant tout simplement un concatene entre é requête. Une sur la date A et une autre sur la date B.

    Merci pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/01/2020, 13h13
  2. Réponses: 1
    Dernier message: 23/04/2012, 11h57
  3. [XL-2007] Comment connaître le nombre de lignes avec une valeur ?
    Par EFFLYINGJOKER dans le forum Excel
    Réponses: 4
    Dernier message: 13/05/2011, 15h31
  4. Recherche avec un filtre par date
    Par mehdiyou dans le forum SQL
    Réponses: 2
    Dernier message: 18/04/2008, 14h08
  5. probleme avec l filtre des date
    Par kroma23 dans le forum Bases de données
    Réponses: 8
    Dernier message: 15/05/2007, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo