Articles

generera helt slumpmässigt prov utgång från en Dataset

Detta är den andra artikeln i en kort serie av SQL Server query utmaningar för att testa och utöka dina SQL Server fråga färdigheter. Medan ingen av dessa korta artiklar är av överväldigande komplexitet, kommer de förhoppningsvis antingen att lära dig något nytt eller hjälpa dig att återaktivera potentiellt vilande SQL-färdigheter som förberedelse för din nästa verkliga utmaning. Du kan se resten av artiklarna på sidan Query Answers with SQL Server.

i den här artikeln kommer vi återigen att föreställa oss att du arbetar för en liten klassisk Bilhandlare, kallad Prestige Cars Ltd, med hjälp av data som finns i företagsdatabasen.

VD vill ringa upp en handfull kunder slumpmässigt och fråga dem om den tjänst som de har fått från Prestige Cars. Hon ber dig att producera en helt slumpmässig lista över försäljning med relevanta kunder.

utmaningen

din utmaning är att komma med SQL för att tillfredsställa hennes begäran. Här är en möjlig lösning:

SELECT TOP 5 PERCENT *FROM Data.SalesByCountryORDER BY NEWID()

kör den här koden ger de resultat som du kan se i Figur 1.

Figur 1. Generera slumpmässig utgång från en tabell med NEWID ()

hur det fungerar

T-SQL har en funktion, NEWID(), som lägger till en 32-tecken unik alfanumerisk identifierare till en post. Denna sträng garanteras vara unik av SQL Server. Inte bara det, men dess struktur är helt slumpmässig; det vill säga det finns ingen sekvens eller ordning på hur den genereras.

den här frågan använder NEWID () för att randomisera dataval så här:

först

du skriver en enkel SELECT-Fråga för att returnera data från SalesByCountry-vyn. Den här vyn sammanfogar alla nödvändiga tabeller i den underliggande databasen som du behöver för att mata ut meningsfulla data.

sedan

du lägger till ett NEWIDFÄLT () i utdata från en fråga för att producera en helt slumpmässig identifierare. Fältet NEWID () behöver inte finnas i Select-satsen för att läggas till i datauppsättningen. Att lägga till det i ORDER BY-satsen lägger fortfarande till fältet, men utan att det är synligt.så genom att sortera data med det här fältet har du en postmängd i en slumpmässig sorteringsordning.

slutligen

du lägger till en topp n-PROCENTKLAUSUL I SELECT-klausulen för att bara mata ut de första procenten (5 procent i det här exemplet) av postmängden.

slutresultatet är en slumpmässig delmängd av data från en databas.

Tricks och fällor

vi har en kommentar att göra om denna teknik. Om du vill se hur ett av dessa unika identifieringsfält ser ut kan du köra kod som följande utdrag:

SELECT NEWID()FROM Data.SalesByCountry

detta ger den typ av resultat som du kan se i Figur 2.

Figur 2. Generera unika identifierare med NEWID ()

det är det. Du har sett ett enkelt exempel på hur man genererar helt slumpmässigt urval från en dataset. Fortsätt titta SQLServerCentral.com redo för nästa artikel i denna serie.

den här artikeln är anpassad från boken ”Query Answers with SQL Server Volume II: in-Depth Querying” av Adam och Karine Aspin. Finns som både en pocketbok och en e-bok från alla bra återförsäljare inklusive Amazon, Kobo och iBooks, liksom alla bra bokhandlar.

exempeldata finns antingen i det medföljande materialet för denna artikel eller på Tetras Publiceringswebbplats på: www.tetraspublishing.com/sqlserver.

serien

det finns ett antal artiklar i denna serie. Du kan se dem alla på sidan Query Answers.

Lämna ett svar

Din e-postadress kommer inte publiceras.