requete sql pas facile ... - SQL/NoSQL - Programmation
Marsh Posté le 15-11-2005 à 12:43:37
ReplyMarsh Posté le 15-11-2005 à 12:49:42
Je crois avoir trouvé la question (je chercherai la réponse plus tard), qui est comment lister les enregistrements contenant des noms qui n'existent pas dans des enregistrements pour une date inférieure (ou peut-être pour une date immédiatement inférieure).
Marsh Posté le 15-11-2005 à 12:51:41
flo850 a écrit : je comrpends pas la question |
Zut, je n'ai pas ete assez clair.
En fait en janvier il y a eu 2 nouveaux enregistrements (toto et tutu), en fevrier 1 nouveau (tata), en mars 2 nouveaux (tete, titi)
Marsh Posté le 15-11-2005 à 12:52:06
Code :
|
Marsh Posté le 15-11-2005 à 12:52:43
Et la réponse est :
SELECT t1.date, t1.name |
Une autre question plus dure ?
Marsh Posté le 15-11-2005 à 12:54:42
olivthill a écrit : Je crois avoir trouvé la question (je chercherai la réponse plus tard), qui est comment lister les enregistrements contenant des noms qui n'existent pas dans des enregistrements pour une date inférieure (ou peut-être pour une date immédiatement inférieure). |
tout juste, c'est ce que je cherche Olivthill.
Marsh Posté le 15-11-2005 à 13:09:52
olivthill a écrit : Et la réponse est :
Une autre question plus dure ? |
c'etait pas facile pour moi :-(.
En tout cas merci.
Mais par contre qu'est ce que c'est lent (5min pour 3000 enregistrements) ...........
Marsh Posté le 15-11-2005 à 14:01:38
En fait, le résultat voulu, c'est la date à laquelle apparaît chacune des valeurs présentes
SELECT name, MIN(date)
FROM Table
GROUP BY name
(si c'est ca, ca risque d'être un poil plus rapide )
Marsh Posté le 15-11-2005 à 14:48:58
SELECT COUNT(*) = 0 -> NOT EXISTS ou NOT IN ou HAVING COUNT(*) = 0
ce sera plus performant déjà
Marsh Posté le 15-11-2005 à 15:57:13
betsamee a écrit : ma solution ne fonctionne pas? |
Ca marche aussi et c'est rapide. Mais ca ne me parait pas tres logique.
Et comment ferais-tu pour compter le nombre d'entrees nouvelles (avec count). le resultat devrait etre:
2
1
2
Marsh Posté le 15-11-2005 à 17:25:38
Je comprends pas trop la question, tu veux compter quoi exactement ?
Si c'est le nombre total d'entrées nouvelles par jour :
SELECT t1.date, COUNT(DISTINCT t1.name)
FROM maTable t1
WHERE NOT EXISTS
(SELECT 1
FROM maTable t2
WHERE t2.name = t1.name
AND t2.date < t1.date)
GROUP BY t1.date;
Marsh Posté le 15-11-2005 à 12:42:22
Bonjour,
j'ai une requete SQL qui me bloque depuis quelque temps.
Je souhaite obtenir le nombre de nouveaux enregistrements ajoutees par rapport aux precedentes dates.
ex:Table
date name
01/01/05 toto
01/01/05 tutu
01/02/05 toto
01/02/05 tutu
01/02/05 tata
01/03/05 toto
01/03/05 tutu
01/03/05 tata
01/03/05 tete
01/03/05 titi
resultat voulu:
01/01/05 toto
01/01/05 tutu
01/02/05 tata
01/03/05 tete
01/03/05 titi
Avis aux experts SQL...
Merci de votre aide.