Transact-SQL: Selezione di record casuali da una tabella
Tutti i principali DBMS hanno questa possibilità. Nell’esempio sottostante vengono presi 1000 record in maniera
casuale da TABELLA:
SELECT TOP 1000 *
FROM TABELLA
ORDER BY NEWID()
Per prenderne uno solo:
SELECT TOP 1 *
FROM TABELLA
ORDER BY NEWID()
Con un piccolo sforzo in più si possono anche ordinare. Ecco un esempio:
CREATE TABLE VENDITE (AGENTE VARCHAR(20), PRODOTTO VARCHAR(20), PAESE VARCHAR(20), QUANTITA INT)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'PS3', 'ITALIA', 20)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'PS3', 'SPAGNA', 30)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'PS3', 'FRANCIA', 10)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'PS3', 'GERMANIA', 15)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'WII', 'ITALIA', 10)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'WII', 'SPAGNA', 25)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'WII', 'INGHILTERRA', 8)
INSERT INTO VENDITE VALUES ('AGENTE 1', 'WII', 'GERMANIA', 35)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'PS3', 'ITALIA', 22)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'PS3', 'SPAGNA', 32)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'PS3', 'FRANCIA', 16)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'PS3', 'GERMANIA', 19)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'WII', 'ITALIA', 23)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'WII', 'SPAGNA', 14)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'WII', 'INGHILTERRA', 7)
INSERT INTO VENDITE VALUES ('AGENTE 2', 'WII', 'GERMANIA', 33)
Con la query:
SELECT T.*
FROM (
SELECT TOP 5 *
FROM VENDITE
ORDER BY NEWID()
) T
ORDER BY T.QUANTITA
Si ottiene un risultato simile a questo:
Agente Prodotto Paese Quantita AGENTE 1 WII INGHILTERRA 8 AGENTE 2 WII SPAGNA 14 AGENTE 1 PS3 GERMANIA 15 AGENTE 2 PS3 GERMANIA 19 AGENTE 2 PS3 ITALIA 22
Leave a Reply