Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
890 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Réglé] [SQL] [ORACLE] Tri / regroupement "cyclique" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Réglé] [SQL] [ORACLE] Tri / regroupement "cyclique" ?

n°2253989
flo'r
Je stalke pas, j'explique.
Posté le 23-03-2015 à 19:42:12  profilanswer
 

Bonjour,
 
Je cherche à faire un truc particulier via un select en (PL/)SQL.
 
Soit la table suivante  avec un jeu de test à la con.
ID est unique.
 

ID | TYPE
-----------
1  | A
2  | A
3  | B
4  | C
5  | C
6  | C
7  | C


 
 
Je cherche à avoir ce résultat :
 

ID | TYPE | LOT
1  | A    | 1
3  | B    | 1
4  | C    | 1
 
2  | A    | 2
5  | C    | 2
 
 
5  | C    | 3
6  | C    | 4
7  | C    | 5


 
En gros je veux faire des blocs (lots) où chaque bloc ne contient qu'un seul type.
 
Une idée ? Via rank over / Partition by ?
 
:jap:


Message édité par flo'r le 02-04-2015 à 15:08:19

---------------
Topic de vente M42 / Contax Yashica / Minolta / Whatever <-- click here !
mood
Publicité
Posté le 23-03-2015 à 19:42:12  profilanswer
 

n°2253996
lasnoufle
La seule et unique!
Posté le 23-03-2015 à 21:18:15  profilanswer
 

Salut
 
Ouaip exactement ca.
Un truc genre:

SELECT id, type, RANK() OVER(PARTITION BY type ORDER BY id) lot
FROM table
ORDER BY 3,1


---------------
C'était vraiment très intéressant.
n°2253997
flo'r
Je stalke pas, j'explique.
Posté le 23-03-2015 à 21:31:01  profilanswer
 
n°2254025
flo'r
Je stalke pas, j'explique.
Posté le 24-03-2015 à 12:13:28  profilanswer
 

Autre difficulté :
 
- je souhaite limiter le nombre de ligne par lot d'une valeur arbitraire Nmax.
Donc un lot = type est unique et nombre de lignes <= Nmax
 
Là je suis perdu...
 
Exemple de résultat attendu pour Nmax = 2 :

ID | TYPE | LOT  
---------------
1  | A    | 1  
3  | B    | 1  
 
2  | A    | 2  
4  | C    | 2  
 
5  | C    | 3  
 
6  | C    | 4  
 
7  | C    | 5


 
Une idée ?
 


---------------
Topic de vente M42 / Contax Yashica / Minolta / Whatever <-- click here !
n°2254295
lasnoufle
La seule et unique!
Posté le 26-03-2015 à 18:31:52  profilanswer
 

Un truc dans le genre:

SELECT id, type, lot
FROM (
  SELECT id, type, lot, RANK() OVER(PARTITION BY lot ORDER BY type) AS nbInLot
  FROM (
    SELECT id, type, RANK() OVER(PARTITION BY type ORDER BY id) AS lot
    FROM table
    ORDER BY 3,1
  )
)
WHERE nbInLot <= 2


---------------
C'était vraiment très intéressant.
n°2254823
flo'r
Je stalke pas, j'explique.
Posté le 02-04-2015 à 15:08:03  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Réglé] [SQL] [ORACLE] Tri / regroupement "cyclique" ?

 

Sujets relatifs
[SQL] Aide requête avec enregistrement facultatifRequête SQL Update dans PHP
PHP/Oracle : erreurs avec ora_logon() et oci_connect()Gestion et "regroupement" des déplacements
[Access/SQL] Comparaison de tables[Réglé] [SQL] Update après un select
TRI TABLEAU à partir liste déroulante[SQL] Sélectionner tous les champs dans une requete sans les citer
[réglé] [SQL] Jointure et variable du meme nomRequête SQL jointure deux champs vers un même champ
Plus de sujets relatifs à : [Réglé] [SQL] [ORACLE] Tri / regroupement "cyclique" ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR