emidiosouza commited on
Commit
5b3a43c
·
verified ·
1 Parent(s): 5e5d1c4

fix: query final para checagem com Johann 19-nov

Browse files
Files changed (1) hide show
  1. query.sql +110 -119
query.sql CHANGED
@@ -26,36 +26,41 @@ SELECT
26
  COALESCE(data->'responseData'->0->'response'->'region'->>'country', 'Não especificado') AS "País",
27
  -- região
28
  COALESCE(data->'responseData'->0->'response'->'region'->>'region_name', 'Não especificado') AS "Região",
29
-
30
  -- Consolidar quantidade, tipo de mineralização e minerais com concentração
31
- COALESCE(
32
- array_to_string(
33
- ARRAY(
34
- SELECT CONCAT(
35
- COALESCE(mineralization->>'quantity', 'ND'), ' de ',
36
- COALESCE(mineralization->>'type', 'ND'), ': ',
37
- array_to_string(
38
- ARRAY(
39
- SELECT CONCAT(
40
- mineral->>'name',
41
- ' (', COALESCE(mineral->>'concentration', 'ND'), ')'
42
- )
43
- FROM jsonb_array_elements(CASE
44
- WHEN jsonb_typeof(mineralization->'minerals') = 'array'
45
- THEN mineralization->'minerals'
46
- ELSE '[]'::jsonb
47
- END) AS mineral
48
- ), ', '
 
 
 
 
 
 
 
 
49
  )
50
- )
51
- FROM jsonb_array_elements(CASE
52
- WHEN jsonb_typeof(data->'responseData'->0->'response'->'mineralizations') = 'array'
53
- THEN data->'responseData'->0->'response'->'mineralizations'
54
- ELSE '[]'::jsonb
55
- END) AS mineralization
56
- ), '; '
57
- ), 'Não especificado'
58
- ) AS "Quantidades e concentrações",
59
 
60
  -- extra_info
61
  COALESCE(data->'responseData'->0->'response'->'region'->>'extra_info', 'Não especificado') AS "Informações adicionais",
@@ -67,99 +72,88 @@ SELECT
67
  COALESCE(NULLIF(data->'responseData'->0->'response'->'geological_context'->>'context_of_present_rocks', ''), 'Não especificado') AS "Rochas presentes", -- OK
68
 
69
  -- Rochas sedimentares
70
- COALESCE(
71
- CASE
72
- WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') = 'array' THEN
73
- array_to_string(
74
- ARRAY(
75
- SELECT CONCAT(
76
- sedimentares->>'name',
77
- ' (Tipo: ', sedimentares->>'type',
78
- ', Relações de contato: ', COALESCE(sedimentares->>'contact_relations', 'ND'), ')'
79
- )
80
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') AS sedimentares
81
- ), '; '
82
- )
83
- ELSE 'Não identificado'
84
- END,
85
- 'Não identificado'
86
- ) AS "Rochas sedimentares",
87
-
88
  -- Rochas metamórficas
89
- COALESCE(
90
- CASE
91
- WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') = 'array' THEN
92
- array_to_string(
93
- ARRAY(
94
- SELECT CONCAT(
95
- metam->>'name',
96
- ' (Tipo: ', metam->>'type',
97
- ', Relações de contato: ', COALESCE(metam->>'contact_relations', 'ND'), ')'
98
- )
99
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') AS metam
100
- ), '; '
101
- )
102
- ELSE 'Não identificado'
103
- END,
104
- 'Não identificado'
105
- ) AS "Rochas metamórficas",
106
 
107
  -- Rochas ígneas intrusivas
108
- COALESCE(
109
- CASE
110
- WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') = 'array' THEN
111
- array_to_string(
112
- ARRAY(
113
- SELECT CONCAT(
114
- igneas_i->>'name',
115
- ' (Tipo: ', igneas_i->>'type',
116
- ', Relações de contato: ', COALESCE(igneas_i->>'contact_relations', 'ND'), ')'
117
- )
118
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') AS igneas_i
119
- ), '; '
120
- )
121
- ELSE 'Não identificado'
122
- END,
123
- 'Não identificado'
124
- ) AS "Rochas ígneas intrusivas",
125
 
126
  -- Rochas ígneas extrusivas
127
- COALESCE(
128
- CASE
129
- WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') = 'array' THEN
130
- array_to_string(
131
- ARRAY(
132
- SELECT CONCAT(
133
- igneas_e->>'name',
134
- ' (Tipo: ', igneas_e->>'type',
135
- ', Relações de contato: ', COALESCE(igneas_e->>'contact_relations', 'ND'), ')'
136
- )
137
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') AS igneas_e
138
- ), '; '
139
- )
140
- ELSE 'Não identificado'
141
- END,
142
- 'Não identificado'
143
- ) AS "Rochas ígneas extrusivas",
144
 
145
  -- Rochas ígneas subvulcânicas
146
- COALESCE(
147
- CASE
148
- WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') = 'array' THEN
149
- array_to_string(
150
- ARRAY(
151
- SELECT CONCAT(
152
- igneas_sv->>'name',
153
- ' (Tipo: ', igneas_sv->>'type',
154
- ', Relações de contato: ', COALESCE(igneas_sv->>'contact_relations', 'ND'), ')'
155
- )
156
- FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') AS igneas_sv
157
- ), '; '
158
- )
159
- ELSE 'Não identificado'
160
- END,
161
- 'Não identificado'
162
- ) AS "Rochas ígneas subvulcânicas",
163
 
164
  -- Rochas hospedeiras
165
  COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'name', '[null]'), 'Não identificado') AS "Nomes de rochas hospedeiras",
@@ -221,10 +215,7 @@ SELECT
221
  FROM
222
  "Future Mining"."Extraction" e
223
 
224
- GROUP BY
225
- e."createdAt",
226
- e.id,
227
- e.name,
228
- data->'responseData'->0->'response'->'mineralizations'->'type';
229
 
230
 
 
26
  COALESCE(data->'responseData'->0->'response'->'region'->>'country', 'Não especificado') AS "País",
27
  -- região
28
  COALESCE(data->'responseData'->0->'response'->'region'->>'region_name', 'Não especificado') AS "Região",
 
29
  -- Consolidar quantidade, tipo de mineralização e minerais com concentração
30
+ -- Consolidar quantidade, tipo de mineralização e minerais com concentração
31
+ CASE
32
+ WHEN jsonb_typeof(data->'responseData'->0->'response'->'mineralizations') = 'array' THEN
33
+ array_to_string(
34
+ ARRAY(
35
+ SELECT CONCAT(
36
+ -- Mostra a quantidade e o tipo de mineralização
37
+ mineralization->>'quantity', ' de ',
38
+ mineralization->>'type',
39
+
40
+ -- Condicional para incluir minerais apenas se existirem
41
+ CASE
42
+ WHEN jsonb_typeof(mineralization->'minerals') = 'array'
43
+ AND jsonb_array_length(mineralization->'minerals') > 0 THEN
44
+ ': ' || array_to_string(
45
+ ARRAY(
46
+ SELECT CONCAT(
47
+ mineral->>'name',
48
+ ' (', mineral->>'concentration', ')'
49
+ )
50
+ FROM jsonb_array_elements(mineralization->'minerals') AS mineral
51
+ WHERE mineral IS NOT NULL -- Ignora nulos
52
+ ), ', '
53
+ )
54
+ ELSE '' -- Não mostra nada se não houver minerais
55
+ END
56
  )
57
+ FROM jsonb_array_elements(data->'responseData'->0->'response'->'mineralizations') AS mineralization
58
+ WHERE mineralization IS NOT NULL -- Ignora nulos
59
+ ), '; '
60
+ )
61
+ ELSE NULL -- Retorna NULL se o array não existir
62
+ END AS "Quantidades e concentrações",
63
+
 
 
64
 
65
  -- extra_info
66
  COALESCE(data->'responseData'->0->'response'->'region'->>'extra_info', 'Não especificado') AS "Informações adicionais",
 
72
  COALESCE(NULLIF(data->'responseData'->0->'response'->'geological_context'->>'context_of_present_rocks', ''), 'Não especificado') AS "Rochas presentes", -- OK
73
 
74
  -- Rochas sedimentares
75
+ CASE
76
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') = 'array' THEN
77
+ array_to_string(
78
+ ARRAY(
79
+ SELECT CONCAT(
80
+ sedimentares->>'name',
81
+ ' (Tipo: ', sedimentares->>'type',
82
+ ', Relações de contato: ', COALESCE(sedimentares->>'contact_relations', 'ND'), ')'
83
+ )
84
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') AS sedimentares
85
+ WHERE sedimentares IS NOT NULL -- Ignora elementos nulos
86
+ ), '; '
87
+ )
88
+ ELSE '' -- Retorna vazio se o array não existir
89
+ END AS "Rochas sedimentares",
 
 
 
90
  -- Rochas metamórficas
91
+ CASE
92
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') = 'array' THEN
93
+ array_to_string(
94
+ ARRAY(
95
+ SELECT CONCAT(
96
+ metam->>'name',
97
+ ' (Tipo: ', metam->>'type',
98
+ ', Relações de contato: ', COALESCE(metam->>'contact_relations', 'ND'), ')'
99
+ )
100
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') AS metam
101
+ WHERE metam IS NOT NULL
102
+ ), '; '
103
+ )
104
+ ELSE ''
105
+ END AS "Rochas metamórficas",
 
 
106
 
107
  -- Rochas ígneas intrusivas
108
+ CASE
109
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') = 'array' THEN
110
+ array_to_string(
111
+ ARRAY(
112
+ SELECT CONCAT(
113
+ igneas_i->>'name',
114
+ ' (Tipo: ', igneas_i->>'type',
115
+ ', Relações de contato: ', COALESCE(igneas_i->>'contact_relations', 'ND'), ')'
116
+ )
117
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') AS igneas_i
118
+ WHERE igneas_i IS NOT NULL
119
+ ), '; '
120
+ )
121
+ ELSE ''
122
+ END AS "Rochas ígneas intrusivas",
 
 
123
 
124
  -- Rochas ígneas extrusivas
125
+ CASE
126
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') = 'array' THEN
127
+ array_to_string(
128
+ ARRAY(
129
+ SELECT CONCAT(
130
+ igneas_e->>'name',
131
+ ' (Tipo: ', igneas_e->>'type',
132
+ ', Relações de contato: ', COALESCE(igneas_e->>'contact_relations', 'ND'), ')'
133
+ )
134
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') AS igneas_e
135
+ WHERE igneas_e IS NOT NULL
136
+ ), '; '
137
+ )
138
+ ELSE ''
139
+ END AS "Rochas ígneas extrusivas",
 
 
140
 
141
  -- Rochas ígneas subvulcânicas
142
+ CASE
143
+ WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') = 'array' THEN
144
+ array_to_string(
145
+ ARRAY(
146
+ SELECT CONCAT(
147
+ igneas_sv->>'name',
148
+ ' (Tipo: ', igneas_sv->>'type',
149
+ ', Relações de contato: ', COALESCE(igneas_sv->>'contact_relations', 'ND'), ')'
150
+ )
151
+ FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') AS igneas_sv
152
+ WHERE igneas_sv IS NOT NULL
153
+ ), '; '
154
+ )
155
+ ELSE ''
156
+ END AS "Rochas ígneas subvulcânicas",
 
 
157
 
158
  -- Rochas hospedeiras
159
  COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'name', '[null]'), 'Não identificado') AS "Nomes de rochas hospedeiras",
 
215
  FROM
216
  "Future Mining"."Extraction" e
217
 
218
+ ORDER BY
219
+ e."createdAt";
 
 
 
220
 
221