Digamos que eu tenha uma tabela com o esquema:
id value
1 0.3
2 0.6
5 0.1
4 0.7
Fornecido por
CREATE TABLE foo AS
SELECT * FROM (
VALUES (1,0.3::float),(2,0.6),(5,0.1),(4,0.7)
) AS x(id, value)
Eu quero discretizar a coluna de valor.
A ideia é hierarquizar os valores e associar 1 à primeira metade e 2 à segunda.
id value normalized
1 0.3 1
2 0.6 2
5 0.1 1
4 0.7 2
Não consigo descobrir como fazer isso no SQL, alguma ajuda?
PS: Estou usando o Postgres, então qualquer solução dependente do Postgres também serviria
Você pode usar a
NTILE()
função:O
2
significa que os valores devem ser divididos em dois buckets, após serem ordenados conforme aover
cláusula:(ORDER BY value)
.