I am new to Postgres and the function crosstab()
. I have query like this:
select * from crosstab(
'select artis_clean, release_year, total_count_song from top_artis_5year ' ,
'select distinct release_year from top_artis_5year order by 1 '
) as (
"artis_clean" text, "1965" int , "1966" int, "1967" int, "1968" int,"1969" int,"1970" int
);
I get a result like this:
artis_clean 1965 1966 1967 1968 1969 1970
------------ ---- ---- ---- ---- ---- -----
the beatles null null 23 null null null
led zepelin null null null null 18 null
the beatles 15 null null 13 13 null
led zepelin 12 null null null null null
jimi hendrix null null 9 null null null
jimi hendrix 8 null null null null null
Why does artis_clean
still have duplicate data, when I put artis_clean
in the distinct
?
'select distinct release_year,artis_clean from top_artis_5year order by 1 '
The code won't work, Postgres says:
ERROR: provided "categories" SQL must return 1 column of at least one row
SQL state: 42601