Skip to content

Latest commit

 

History

History
434 lines (396 loc) · 16 KB

database.org

File metadata and controls

434 lines (396 loc) · 16 KB

Table Schema

\d
List of relations
SchemaNameTypeOwner
publicalembic_versiontableakvo
publicanswertableakvo
publicanswer_id_seqsequenceakvo
publicdatatableakvo
publicdata_id_seqsequenceakvo
publicformtableakvo
publicform_id_seqsequenceakvo
publicoptiontableakvo
publicoption_id_seqsequenceakvo
publicquestiontableakvo
publicquestion_grouptableakvo
publicquestion_group_id_seqsequenceakvo
publicquestion_id_seqsequenceakvo

Form

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'form'
ORDER  BY ordinal_position;
column_namedata_type
idinteger
namecharacter varying

Question Group

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'question_group'
ORDER  BY ordinal_position;
column_namedata_type
idinteger
orderinteger
namecharacter varying
forminteger

Question

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'question'
ORDER  BY ordinal_position;
column_namedata_type
idinteger
orderinteger
namecharacter varying
forminteger
typeUSER-DEFINED
question_groupinteger

Option

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'option'
ORDER  BY ordinal_position;
column_namedata_type
idinteger
orderinteger
namecharacter varying
questioninteger

Data

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'data'
ORDER  BY ordinal_position;
column_namedata_type
idinteger
forminteger
createdtimestamp without time zone
SELECT COUNT(*)
FROM   data;
count
99

Answer

SELECT column_name, data_type
FROM   information_schema.columns
WHERE  table_name = 'answer'
ORDER  BY ordinal_position;
column_namedata_type
idinteger
questioninteger
datainteger
valuedouble precision
texttext
optionsARRAY
SELECT COUNT(*)
FROM   answer;
count
693
SELECT *
FROM   answer
LIMIT 16;
idquestiondatavaluetextoptions
111{Urban}
221{Female}
331{sibling}
441{Female}
5515
6611
771{“Seasonal migrant”}
881Michael Jackson
912{Peri-urban}
1022{Male}
1132{Offspring}
1242{Male}
13522
14624
1572{“Seasonal migrant”}
1682Antonio Morris

Example Query

SELECT row_number() over (partition by true) as id,form, data, 'Category 1' as name, category
FROM (
  SELECT form, data, COUNT(non_rural_female_head), 3 as valid, 'Non-Rural Female Head' as category
  FROM (SELECT form, data, CASE
    WHEN ((opt = ANY(ARRAY['Female'])) AND (question = 2)) THEN True
    WHEN ((opt = ANY(ARRAY['Head'])) AND (question = 3)) THEN True
    WHEN
    (CASE WHEN  ((opt = ANY(ARRAY['Peri-urban', 'Urban'])) AND (question = 1)) THEN True END) THEN True
    END AS non_rural_female_head
    FROM
    (SELECT
     q.form, aa.data, aa.question, unnest(aa.options)::TEXT as opt
     FROM answer aa
     LEFT JOIN question q ON q.id = aa.question) a
   ) aw
  WHERE non_rural_female_head = True
  GROUP BY data, form
  UNION
  SELECT form, data, COUNT(rural_parent_or_refugee), 2 as valid, 'Rural Parent or Refugee' as category
  FROM (SELECT form, data, CASE
    WHEN ((opt = ANY(ARRAY['Rural'])) AND (question = 1)) THEN True
    WHEN
    (CASE WHEN  ((opt = ANY(ARRAY['Parent'])) AND (question = 3)) THEN True END) OR

    (CASE WHEN  ((opt = ANY(ARRAY['Refugee/IDPs'])) AND (question = 7)) THEN True END) THEN True
    END AS rural_parent_or_refugee
    FROM
    (SELECT
     q.form, aa.data, aa.question, unnest(aa.options)::TEXT as opt
     FROM answer aa
     LEFT JOIN question q ON q.id = aa.question) a
   ) aw
  WHERE rural_parent_or_refugee = True
  GROUP BY data, form
) d WHERE d.count >= d.valid
UNION
SELECT row_number() over (partition by true) as id,form, data, 'Category 2' as name, category
FROM (
  SELECT form, data, COUNT(male_non_permanent_resident), 2 as valid, 'Male Non-Permanent Resident' as category
  FROM (SELECT form, data, CASE
    WHEN ((opt = ANY(ARRAY['Male'])) AND (question = 2)) THEN True
    WHEN ((opt = ANY(ARRAY['Nomadic'])) AND (question = 7)) THEN True
    END AS male_non_permanent_resident
    FROM
    (SELECT
     q.form, aa.data, aa.question, unnest(aa.options)::TEXT as opt
     FROM answer aa
     LEFT JOIN question q ON q.id = aa.question) a
   ) aw
  WHERE male_non_permanent_resident = True
  GROUP BY data, form
  UNION
  SELECT form, data, COUNT(female_permanent_resident), 2 as valid, 'Female Permanent Resident' as category
  FROM (SELECT form, data, CASE
    WHEN ((opt = ANY(ARRAY['Permanent'])) AND (question = 7)) THEN True
    WHEN ((opt = ANY(ARRAY['Female'])) AND (question = 4)) THEN True
    END AS female_permanent_resident
    FROM
    (SELECT
     q.form, aa.data, aa.question, unnest(aa.options)::TEXT as opt
     FROM answer aa
     LEFT JOIN question q ON q.id = aa.question) a
   ) aw
  WHERE female_permanent_resident = True
  GROUP BY data, form
) d WHERE d.count >= d.valid
ORDER BY data;
idformdatanamecategory
1811Category 1Non-Rural Female Head
1211Category 2Female Permanent Resident
1014Category 2Male Non-Permanent Resident
2017Category 2Female Permanent Resident
417Category 1Rural Parent or Refugee
9110Category 1Non-Rural Female Head
11115Category 2Female Permanent Resident
19115Category 1Rural Parent or Refugee
1116Category 2Female Permanent Resident
18118Category 2Female Permanent Resident
1120Category 1Rural Parent or Refugee
16123Category 1Rural Parent or Refugee
17127Category 2Male Non-Permanent Resident
22128Category 1Non-Rural Female Head
3130Category 1Non-Rural Female Head
14133Category 2Female Permanent Resident
3134Category 2Female Permanent Resident
8135Category 1Rural Parent or Refugee
4135Category 2Male Non-Permanent Resident
13137Category 2Male Non-Permanent Resident
24138Category 1Rural Parent or Refugee
15140Category 2Female Permanent Resident
2143Category 1Rural Parent or Refugee
21145Category 2Female Permanent Resident
2147Category 2Male Non-Permanent Resident
25149Category 1Rural Parent or Refugee
28150Category 1Rural Parent or Refugee
19151Category 2Male Non-Permanent Resident
16152Category 2Male Non-Permanent Resident
8153Category 2Female Permanent Resident
5154Category 2Male Non-Permanent Resident
12156Category 1Rural Parent or Refugee
27157Category 1Non-Rural Female Head
11158Category 1Rural Parent or Refugee
21159Category 1Rural Parent or Refugee
20160Category 1Rural Parent or Refugee
10169Category 1Rural Parent or Refugee
6171Category 1Non-Rural Female Head
23175Category 1Non-Rural Female Head
9178Category 2Male Non-Permanent Resident
6179Category 2Male Non-Permanent Resident
7181Category 2Female Permanent Resident
7186Category 1Rural Parent or Refugee
5187Category 1Non-Rural Female Head
15188Category 1Rural Parent or Refugee
14192Category 1Rural Parent or Refugee
17193Category 1Rural Parent or Refugee
22194Category 2Male Non-Permanent Resident
13196Category 1Non-Rural Female Head
26197Category 1Rural Parent or Refugee
select * from (
select data, count(options) FROM (
  select *
  from answer where 'Head'=ANY(options) and question = 3
  UNION
  select *
  from answer where 'Female'=ANY(options) and question = 2
  UNION
  select *
  from answer where 'Urban'=ANY(options) or 'Peri-urban'=ANY(options) and question = 1
) d
GROUP BY data) dd
WHERE count = 3
ORDER BY data
datacount
33
63
243
323
353
433
633
663
793
813
923
933

Views

select * from ar_category
idformdatanamecategory
1811Category 1Non-Rural Female Head
1211Category 2Female Permanent Resident
1014Category 2Male Non-Permanent Resident
2017Category 2Female Permanent Resident
417Category 1Rural Parent or Refugee
9110Category 1Non-Rural Female Head
11115Category 2Female Permanent Resident
19115Category 1Rural Parent or Refugee
1116Category 2Female Permanent Resident
18118Category 2Female Permanent Resident
1120Category 1Rural Parent or Refugee
16123Category 1Rural Parent or Refugee
17127Category 2Male Non-Permanent Resident
22128Category 1Non-Rural Female Head
3130Category 1Non-Rural Female Head
14133Category 2Female Permanent Resident
3134Category 2Female Permanent Resident
8135Category 1Rural Parent or Refugee
4135Category 2Male Non-Permanent Resident
13137Category 2Male Non-Permanent Resident
24138Category 1Rural Parent or Refugee
15140Category 2Female Permanent Resident
2143Category 1Rural Parent or Refugee
21145Category 2Female Permanent Resident
2147Category 2Male Non-Permanent Resident
25149Category 1Rural Parent or Refugee
28150Category 1Rural Parent or Refugee
19151Category 2Male Non-Permanent Resident
16152Category 2Male Non-Permanent Resident
8153Category 2Female Permanent Resident
5154Category 2Male Non-Permanent Resident
12156Category 1Rural Parent or Refugee
27157Category 1Non-Rural Female Head
11158Category 1Rural Parent or Refugee
21159Category 1Rural Parent or Refugee
20160Category 1Rural Parent or Refugee
10169Category 1Rural Parent or Refugee
6171Category 1Non-Rural Female Head
23175Category 1Non-Rural Female Head
9178Category 2Male Non-Permanent Resident
6179Category 2Male Non-Permanent Resident
7181Category 2Female Permanent Resident
7186Category 1Rural Parent or Refugee
5187Category 1Non-Rural Female Head
15188Category 1Rural Parent or Refugee
14192Category 1Rural Parent or Refugee
17193Category 1Rural Parent or Refugee
22194Category 2Male Non-Permanent Resident
13196Category 1Non-Rural Female Head
26197Category 1Rural Parent or Refugee

Check

select relname, relkind
from pg_class
where relkind = 'm';
relnamerelkind
ar_categorym
SELECT data, unnest(options) as opt FROM answer limit 5;
dataopt
1Urban
1Female
1Head
1Female
1Permanent
SELECT data, options as opt FROM answer limit 5;
dataopt
1{Urban}
1{Female}
1{Head}
1{Female}
1