Skip to content

Instantly share code, notes, and snippets.

@gregrahn
Last active August 1, 2019 04:57
Show Gist options
  • Save gregrahn/3f8da568dde7431b34bf7f6a295b320d to your computer and use it in GitHub Desktop.
Save gregrahn/3f8da568dde7431b34bf7f6a295b320d to your computer and use it in GitHub Desktop.
create table rj (l1 int, l2 int, l3 int);
insert into rj values (0,0,0);
insert into rj values (1,1,1);
insert into rj values (1,0,1);
insert into rj values (0,1,0);
insert into rj values (1,0,0);
select * from rj;
l1 | l2 | l3
----+----+----
0 | 0 | 0
1 | 1 | 1
1 | 0 | 1
0 | 1 | 0
1 | 0 | 0
(5 rows)
select 'l'||t.i as label_name, t.label_val
from rj
cross join lateral unnest(array[l1, l2, l3]) with ordinality as t(label_val,i);
label_name | label_val
------------+-----------
l1 | 0
l2 | 0
l3 | 0
l1 | 1
l2 | 1
l3 | 1
l1 | 1
l2 | 0
l3 | 1
l1 | 0
l2 | 1
l3 | 0
l1 | 1
l2 | 0
l3 | 0
(15 rows)
with t as (
select 'l'||t.i as label_name, t.label_val
from rj
cross join lateral unnest(array[l1, l2, l3]) with ordinality as t(label_val,i)
)
select
label_name,
sum(case when label_val = 0 then 1 else 0 end) as count_0,
sum(case when label_val = 1 then 1 else 0 end) as count_1
from t
group by 1
order by 1;
label_name | count_0 | count_1
------------+---------+---------
l1 | 2 | 3
l2 | 3 | 2
l3 | 3 | 2
(3 rows)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment