Je souhaite faire une sélection aléatoire de n% des enregistrements d e ma table (échantillon).
Comment faire ?
Aloha, 2nis
Fr
Bonjour, Je ferais ...
Sur SQLServer 2005 : DECLARE @n INT SET @n /* pourcentage souhaité */
SELECT TOP (@n) PERCENT * FROM MaTable ORDER BY NEWID()
Sur SqlServer 2000 le nombre de ligne (ou le pourcentage) n'est pas paramétrable. Il faudra dans ce cas construire la requete dans une chaine puis executer cette chaine avec sp_executesql ou EXEC
DECLARE @chaine nvarchar(4000) DECLARE @n int SET @n /* pourcentage souhaité */
SET @chaine='SELECT TOP '+@n+' PERCENT * FROM MaTable ORDER BY NEWID()' EXEC sp_executesql @chaine ou alors EXE(@chaine)
Voilà ... mais peut-être que quelqu'un à mieux. Le ORDER BY sur le NEWID() n'est pas hyper performant sur des gros volumes !
"Denis" a écrit dans le message de news:
Bonjour,
Je souhaite faire une sélection aléatoire de n% des enregistrements de ma table (échantillon).
Comment faire ?
Aloha, 2nis
Bonjour,
Je ferais ...
Sur SQLServer 2005 :
DECLARE @n INT
SET @n /* pourcentage souhaité */
SELECT TOP (@n) PERCENT *
FROM MaTable
ORDER BY NEWID()
Sur SqlServer 2000 le nombre de ligne (ou le pourcentage) n'est pas
paramétrable. Il faudra dans ce cas construire la requete dans une chaine
puis executer cette chaine avec sp_executesql ou EXEC
DECLARE @chaine nvarchar(4000)
DECLARE @n int
SET @n /* pourcentage souhaité */
SET @chaine='SELECT TOP '+@n+' PERCENT * FROM MaTable ORDER BY NEWID()'
EXEC sp_executesql @chaine
ou alors
EXE(@chaine)
Voilà ... mais peut-être que quelqu'un à mieux. Le ORDER BY sur le NEWID()
n'est pas hyper performant sur des gros volumes !
Fr@ncky
"Denis" <Denis@discussions.microsoft.com> a écrit dans le message de news:
ADDA0E1A-37A9-4192-8745-26DCC8C3AE0F@microsoft.com...
Bonjour,
Je souhaite faire une sélection aléatoire de n% des enregistrements de ma
table (échantillon).
Sur SQLServer 2005 : DECLARE @n INT SET @n /* pourcentage souhaité */
SELECT TOP (@n) PERCENT * FROM MaTable ORDER BY NEWID()
Sur SqlServer 2000 le nombre de ligne (ou le pourcentage) n'est pas paramétrable. Il faudra dans ce cas construire la requete dans une chaine puis executer cette chaine avec sp_executesql ou EXEC
DECLARE @chaine nvarchar(4000) DECLARE @n int SET @n /* pourcentage souhaité */
SET @chaine='SELECT TOP '+@n+' PERCENT * FROM MaTable ORDER BY NEWID()' EXEC sp_executesql @chaine ou alors EXE(@chaine)
Voilà ... mais peut-être que quelqu'un à mieux. Le ORDER BY sur le NEWID() n'est pas hyper performant sur des gros volumes !
"Denis" a écrit dans le message de news:
Bonjour,
Je souhaite faire une sélection aléatoire de n% des enregistrements de ma table (échantillon).
Comment faire ?
Aloha, 2nis
Denis
Merci por ces réponses
2nis
"" wrote:
Bonjour, Je ferais ...
Sur SQLServer 2005 : DECLARE @n INT SET @n /* pourcentage souhaité */
SELECT TOP (@n) PERCENT * FROM MaTable ORDER BY NEWID()
Sur SqlServer 2000 le nombre de ligne (ou le pourcentage) n'est pas paramétrable. Il faudra dans ce cas construire la requete dans une chaine puis executer cette chaine avec sp_executesql ou EXEC
DECLARE @chaine nvarchar(4000) DECLARE @n int SET @n /* pourcentage souhaité */
SET @chaine='SELECT TOP '+@n+' PERCENT * FROM MaTable ORDER BY NEWID()' EXEC sp_executesql @chaine ou alors EXE(@chaine)
Voilà ... mais peut-être que quelqu'un à mieux. Le ORDER BY sur le NEWID() n'est pas hyper performant sur des gros volumes !
"Denis" a écrit dans le message de news:
> Bonjour, > > Je souhaite faire une sélection aléatoire de n% des enregistrements de ma > table (échantillon). > > Comment faire ? > > Aloha, 2nis
Merci por ces réponses
2nis
"Fr@ncky" wrote:
Bonjour,
Je ferais ...
Sur SQLServer 2005 :
DECLARE @n INT
SET @n /* pourcentage souhaité */
SELECT TOP (@n) PERCENT *
FROM MaTable
ORDER BY NEWID()
Sur SqlServer 2000 le nombre de ligne (ou le pourcentage) n'est pas
paramétrable. Il faudra dans ce cas construire la requete dans une chaine
puis executer cette chaine avec sp_executesql ou EXEC
DECLARE @chaine nvarchar(4000)
DECLARE @n int
SET @n /* pourcentage souhaité */
SET @chaine='SELECT TOP '+@n+' PERCENT * FROM MaTable ORDER BY NEWID()'
EXEC sp_executesql @chaine
ou alors
EXE(@chaine)
Voilà ... mais peut-être que quelqu'un à mieux. Le ORDER BY sur le NEWID()
n'est pas hyper performant sur des gros volumes !
Fr@ncky
"Denis" <Denis@discussions.microsoft.com> a écrit dans le message de news:
ADDA0E1A-37A9-4192-8745-26DCC8C3AE0F@microsoft.com...
> Bonjour,
>
> Je souhaite faire une sélection aléatoire de n% des enregistrements de ma
> table (échantillon).
>
> Comment faire ?
>
> Aloha, 2nis
Sur SQLServer 2005 : DECLARE @n INT SET @n /* pourcentage souhaité */
SELECT TOP (@n) PERCENT * FROM MaTable ORDER BY NEWID()
Sur SqlServer 2000 le nombre de ligne (ou le pourcentage) n'est pas paramétrable. Il faudra dans ce cas construire la requete dans une chaine puis executer cette chaine avec sp_executesql ou EXEC
DECLARE @chaine nvarchar(4000) DECLARE @n int SET @n /* pourcentage souhaité */
SET @chaine='SELECT TOP '+@n+' PERCENT * FROM MaTable ORDER BY NEWID()' EXEC sp_executesql @chaine ou alors EXE(@chaine)
Voilà ... mais peut-être que quelqu'un à mieux. Le ORDER BY sur le NEWID() n'est pas hyper performant sur des gros volumes !
"Denis" a écrit dans le message de news:
> Bonjour, > > Je souhaite faire une sélection aléatoire de n% des enregistrements de ma > table (échantillon). > > Comment faire ? > > Aloha, 2nis