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

Requêtes PostgreSQL Discussion :

Sql error : Derived tables not supported


Sujet :

Requêtes PostgreSQL

  1. #1
    nux
    nux est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Sql error : Derived tables not supported
    Bonjour,

    J'utilise actuellement postgreSQL 11 avec DBeaver et des fichiers dbf. J'avais essayé LibreOffice sans trop de succès.
    https://www.developpez.net/forums/d1...fice-base-sql/

    Actuellement, j'essaye de faire des statistiques sur une table uniquement.

    La table se nomme Table1
    Les champs sont ARRIVEE (de 0 à 5 uniquement) et PLACE1. Je désire connaitre le % de PLACE1 par ARRIVEE sur le total filtré par PLACE1 également et non le total général.

    La requête de base qui fonctionne pour connaître le total de PLACE1 par ARRIVEE est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ARRIVEE, COUNT( * ) AS Total FROM Table1 WHERE PLACE1 = 1
    GROUP BY ARRIVEE 
    ORDER BY ARRIVEE
    Ensuite pour en calculer le % par ARRIVEE, voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ARRIVEE, 
    ROUND( 100.0 * Total / ( SELECT COUNT( * ) FROM Table1 WHERE PLACE1 = 1 )) AS Resultat 
    FROM ( SELECT ARRIVEE, COUNT( * ) AS Total FROM Table1 WHERE PLACE1 = 1 ) 
    GROUP BY ARRIVEE 
    ORDER BY ARRIVEE
    La réponse est SQL Error: Syntax error: derived tables not supported (table dérivée). Il n'y a qu'une table.

    Pourtant, cette requête fonctionne avec base de Openoffice.

    Avez vous une idée pour cette requête ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 571
    Points
    52 571
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT ARRIVEE, 
          100.0 * COUNT(*) OVER(PARTITION BY ARRIVEE) /
    	  COUNT(*) OVER() AS POURCENTAGE_PAR_ARRIVEE
    FROM Table1
    Tout simplement !
    Et pour apprendre le langage SQL :
    Nom : SQL.jpg
Affichages : 294
Taille : 47,4 Ko

    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/ * * * * *

  3. #3
    nux
    nux est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci pour la réponse et pour la référence du livre.

    Ca fonctionne parfaitement. Il manque juste 3 colonnes : l'écart minimum, maximal et moyen par arrivée que je ferais plus tard.

    J'avais essayé ceci qui me donne le total par arrivée
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     create or replace view "Calcul"(numeric) as (SELECT "ARRIVEE", COUNT( * ) AS Total FROM "Feuille1" 
    WHERE "PLACE1" = 1
    GROUP BY "ARRIVEE" ORDER BY "ARRIVEE");
    select * from "Calcul"

    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/01/2015, 16h16
  2. Réponses: 3
    Dernier message: 07/12/2011, 13h48
  3. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  4. [IBConsole]SQL Error
    Par Seb7 dans le forum SQL
    Réponses: 4
    Dernier message: 10/07/2003, 11h38
  5. [SQL] Remplacer une table
    Par rstephane dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/05/2003, 17h10

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