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

Développement SQL Server Discussion :

Ranking avec SQLce 2008


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut Ranking avec SQLce 2008
    Bonjour,comment effectuer un ranking avec SQLCE ?

    Les sous-requêtes ne sont pas pris en charge comme la clause OVER.


    je dois faire un ranking d'une moyenne (AVG).

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    SET NOCOUNT ON
     
    DECLARE @toto TABLE
    (
    	nom char(1) NOT NULL
    	, points tinyint NOT NULL
    )
     
    INSERT INTO @toto VALUES ('A', 1)
    INSERT INTO @toto VALUES ('A', 2)
    INSERT INTO @toto VALUES ('A', 3)
    INSERT INTO @toto VALUES ('B', 8)
    INSERT INTO @toto VALUES ('B', 7)
    INSERT INTO @toto VALUES ('B', 6)
    INSERT INTO @toto VALUES ('B', 5)
    INSERT INTO @toto VALUES ('C', 0)
    INSERT INTO @toto VALUES ('C', 9)
    INSERT INTO @toto VALUES ('C', 255)
     
    SELECT	T1.nom
    	, T1.avg_points
    	, (
    		SELECT	COUNT(DISTINCT T2.avg_points)
    		FROM	(
    				SELECT	nom
    					, AVG(points) AS avg_points
    				FROM	@toto
    				GROUP BY nom
    			) AS T2
    		WHERE	T1.avg_points <= T2.avg_points
    	) AS rang
    FROM
    (
    	SELECT	nom
    		, AVG(points) AS avg_points
    	FROM	@toto
    	GROUP BY nom
    ) AS T1
    ORDER BY rang
    @++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Il y a une sous-requête... (avec SQLCE ce n'est pas possible...)
    Merci quand même

    Je vais peut-être changer pour un SQL Express

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Ha, je pensais que c'était un requis pour votre application

    Pensez peut-être à prendre l'édition developer, qui coûte une quarantaine d'€.
    Elle contient toutes les fonctionnalités de SQL Server

    @++

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    Je suis présentement en stage, je fais une application pour un IUT. Les poste sont barré, de plus SQLCE était intéressant car aucune installation d'une bdd quand l'application sera déployée. Sinon, pour mes besoins, la version Express est aussi bonne.Dans ce cas j'utiliserai la fonction rank(). Dans ce cas,je devrai géré les services a ouvrir pour l'application. Je n'ai pas besoin de développer car il faut que je déploie l'application et s'est légalement impossible.

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 6
    Par défaut
    comment faire le RANK de la moyenne de cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT     NoEtud, NoUnite, Moyenne,
                              (SELECT     COUNT(Moyenne) AS Expr1
                                FROM          (SELECT     ETUD.noETUD, unite.nomunite, AVG(module.coeff * ETUD_MODULE.resultat) AS Moyenne
                                                        FROM          ETUD INNER JOIN
                                                                               ETUD_MODULE ON ETUD.noETUD = ETUD_MODULE.noETUD INNER JOIN
                                                                               module ON ETUD_MODULE.nommodule = module.nomintmodule INNER JOIN
                                                                               unite ON module.nomunite = unite.nomunite
                                                        GROUP BY ETUD.noETUD, unite.nomunite) AS T2
                                WHERE      (T1.Moyenne <= Moyenne)) AS rang
    FROM         (SELECT     ETUD_1.noETUD AS NoEtud, unite_1.nomunite AS NoUnite, AVG(module_1.coeff * ETUD_MODULE_1.resultat) AS Moyenne
                           FROM          ETUD AS ETUD_1 INNER JOIN
                                                  ETUD_MODULE AS ETUD_MODULE_1 ON ETUD_1.noETUD = ETUD_MODULE_1.noETUD INNER JOIN
                                                  module AS module_1 ON ETUD_MODULE_1.nommodule = module_1.nomintmodule INNER JOIN
                                                  unite AS unite_1 ON module_1.nomunite = unite_1.nomunite
                           GROUP BY ETUD_1.noETUD, unite_1.nomunite) AS T1
    ORDER BY rang

Discussions similaires

  1. Problème de fenetre avec Mandriva 2008
    Par cyph3r dans le forum Mandriva / Mageia
    Réponses: 4
    Dernier message: 31/10/2007, 07h30
  2. Améliorer son Google Page Rank avec des échanges de liens ?
    Par mecmec dans le forum Référencement
    Réponses: 3
    Dernier message: 03/08/2007, 11h07
  3. Insertion d'un enrg. avec SQLCE en VB.NET
    Par Friz dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/03/2006, 15h58
  4. [CF][C#] Comment optimiser mes requêtes avec SqlCE ?
    Par david71 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 20/01/2006, 14h48
  5. [C#] Colonne de trop dans DataGrid avec SQLCE
    Par Roach- dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/04/2005, 20h01

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