2009-07-14 10 views

risposta

13

SQLite non è forte in elaborazione analitica, ma se i dati non è molto grande, si può provare ad emulare percentile con ORDER BY, LIMIT 1 e calcolato OFFSET. Si noti che OFFSET è a base zero, quindi è necessario regolarlo di uno.

SELECT 
    height AS 'male 90% height' 
FROM table 
WHERE gender='male' 
ORDER BY height ASC 
LIMIT 1 
OFFSET (SELECT 
     COUNT(*) 
     FROM table 
     WHERE gender='male') * 9/10 - 1; 
+0

Cosa intendi per dati "grandi"? Qual è la portata della soluzione in termini di # di righe di dati nella tabella? E puoi elaborare la parte offset su come la calcoli? – David

+0

Non ho idea della gamma delle dimensioni dei dati. Se funziona per te, bene. L'offset serve per selezionare la riga al 90% dei dati ordinati per altezza - c'è l'altra query per recuperare 'male_count'. – laalto