GeoCosmos2.1 / query.sql
emidiosouza's picture
fix: add region info on query
690a3aa verified
raw
history blame
11.2 kB
SELECT
e.id AS "Id da entrada no banco",
e."createdAt" AS "Data Criação",
e.name AS "Nome do documento",
-- Alvo ou depósito
COALESCE(data->'responseData'->0->'response'->>'target_or_deposit', 'Não especificado') AS "Alvo ou depósito",
-- Tipo de mineralização
COALESCE(
array_to_string(
ARRAY(
SELECT CONCAT(
mineralization->>'type'
)
FROM jsonb_array_elements(data->'responseData'->0->'response'->'mineralizations') AS mineralization
), ', '
), 'Não especificado'
) AS "Tipo de mineralização",
-- cidade
COALESCE(data->'responseData'->0->'response'->'region'->>'city', 'Não especificado') AS "Cidades",
-- estado
COALESCE(data->'responseData'->0->'response'->'region'->>'state', 'Não especificado') AS "Estado",
-- país
COALESCE(data->'responseData'->0->'response'->'region'->>'country', 'Não especificado') AS "País",
-- região
COALESCE(data->'responseData'->0->'response'->'region'->>'region_name', 'Não especificado') AS "Região",
-- Consolidar quantidade, tipo de mineralização e minerais com concentração
COALESCE(
array_to_string(
ARRAY(
SELECT CONCAT(
COALESCE(mineralization->>'quantity', 'ND'), ' de ',
COALESCE(mineralization->>'type', 'ND'), ': ',
array_to_string(
ARRAY(
SELECT CONCAT(
mineral->>'name',
' (', COALESCE(mineral->>'concentration', 'ND'), ')'
)
FROM jsonb_array_elements(CASE
WHEN jsonb_typeof(mineralization->'minerals') = 'array'
THEN mineralization->'minerals'
ELSE '[]'::jsonb
END) AS mineral
), ', '
)
)
FROM jsonb_array_elements(CASE
WHEN jsonb_typeof(data->'responseData'->0->'response'->'mineralizations') = 'array'
THEN data->'responseData'->0->'response'->'mineralizations'
ELSE '[]'::jsonb
END) AS mineralization
), '; '
), 'Não especificado'
) AS "Quantidades e concentrações",
-- extra_info
COALESCE(data->'responseData'->0->'response'->'region'->>'extra_info', 'Não especificado') AS "Informações adicionais",
COALESCE(NULLIF(data->'responseData'->2->'response'->>'mineralizationSignatures', '[]'), 'Não especificado') AS "Assinaturas de mineralização 2",
COALESCE(NULLIF(data->'responseData'->0->'response'->'geological_context'->>'tectonic_context', ''), 'Não especificado') AS "Contexto tectônico", -- OK
COALESCE(NULLIF(data->'responseData'->0->'response'->'geological_context'->>'geological_context_description', ''), 'Não especificado') AS "Contexto geológico", -- OK
COALESCE(NULLIF(data->'responseData'->0->'response'->'geological_context'->>'context_of_present_rocks', ''), 'Não especificado') AS "Rochas presentes", -- OK
-- Rochas sedimentares
COALESCE(
CASE
WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') = 'array' THEN
array_to_string(
ARRAY(
SELECT CONCAT(
sedimentares->>'name',
' (Tipo: ', sedimentares->>'type',
', Relações de contato: ', COALESCE(sedimentares->>'contact_relations', 'ND'), ')'
)
FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'sedimentares') AS sedimentares
), '; '
)
ELSE 'Não identificado'
END,
'Não identificado'
) AS "Rochas sedimentares",
-- Rochas metamórficas
COALESCE(
CASE
WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') = 'array' THEN
array_to_string(
ARRAY(
SELECT CONCAT(
metam->>'name',
' (Tipo: ', metam->>'type',
', Relações de contato: ', COALESCE(metam->>'contact_relations', 'ND'), ')'
)
FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'metamórficas') AS metam
), '; '
)
ELSE 'Não identificado'
END,
'Não identificado'
) AS "Rochas metamórficas",
-- Rochas ígneas intrusivas
COALESCE(
CASE
WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') = 'array' THEN
array_to_string(
ARRAY(
SELECT CONCAT(
igneas_i->>'name',
' (Tipo: ', igneas_i->>'type',
', Relações de contato: ', COALESCE(igneas_i->>'contact_relations', 'ND'), ')'
)
FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_intrusivas') AS igneas_i
), '; '
)
ELSE 'Não identificado'
END,
'Não identificado'
) AS "Rochas ígneas intrusivas",
-- Rochas ígneas extrusivas
COALESCE(
CASE
WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') = 'array' THEN
array_to_string(
ARRAY(
SELECT CONCAT(
igneas_e->>'name',
' (Tipo: ', igneas_e->>'type',
', Relações de contato: ', COALESCE(igneas_e->>'contact_relations', 'ND'), ')'
)
FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_extrusivas') AS igneas_e
), '; '
)
ELSE 'Não identificado'
END,
'Não identificado'
) AS "Rochas ígneas extrusivas",
-- Rochas ígneas subvulcânicas
COALESCE(
CASE
WHEN jsonb_typeof(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') = 'array' THEN
array_to_string(
ARRAY(
SELECT CONCAT(
igneas_sv->>'name',
' (Tipo: ', igneas_sv->>'type',
', Relações de contato: ', COALESCE(igneas_sv->>'contact_relations', 'ND'), ')'
)
FROM jsonb_array_elements(data->'responseData'->1->'response'->'rockTypes'->'ígneas_subvulcânicas') AS igneas_sv
), '; '
)
ELSE 'Não identificado'
END,
'Não identificado'
) AS "Rochas ígneas subvulcânicas",
-- Rochas hospedeiras
COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'name', '[null]'), 'Não identificado') AS "Nomes de rochas hospedeiras",
COALESCE(NULLIF(data->'responseData'->2->'response'->'host_rocks'->>'geologicalEnvironments', '[null]'), 'Não identificado') AS "Ambiente geológico",
COALESCE(NULLIF(array_to_string(ARRAY(SELECT jsonb_array_elements_text(data->'responseData'->2->'response'->'mineralFabric')), ', '), ''), 'Não identificado') AS "Textura de mineralização",
COALESCE(NULLIF(array_to_string(ARRAY(
SELECT jsonb_extract_path_text(associatedMinerals, 'name') || ' (' || 'Cor: ' || jsonb_extract_path_text(associatedMinerals, 'color') || ', Textura: ' || jsonb_extract_path_text(associatedMinerals, 'textures') || ', Nível de Alteração: ' || jsonb_extract_path_text(associatedMinerals, 'alterationLevel') || ')'
FROM jsonb_array_elements(data->'responseData'->2->'response'->'associatedMinerals') AS associatedMinerals
), ', '), ''), 'Não identificado') AS "Minerais associados",
-- Tipos de processos alterações
COALESCE(
NULLIF(
array_to_string(
ARRAY(
SELECT alteration->>'alterationType'
FROM jsonb_array_elements(data->'responseData'->2->'response'->'alteration_processes') AS alteration
), ', '
), ''
), 'Não identificado'
) AS "Tipos de processos de alterações",
-- Minerais associados a alterações hidrotermais
COALESCE(
NULLIF(
array_to_string(
ARRAY(
SELECT jsonb_array_elements_text(alteration->'associatedMinerals')
FROM jsonb_array_elements(data->'responseData'->2->'response'->'alteration_processes') AS alteration
), ', '
), ''
), 'Não identificado'
) AS "Minerais associados a processos de alteração",
COALESCE(NULLIF(data->'responseData'->2->'response'->>'chemical_pattern_analysis', '[]'), 'Não especificado') AS "Análise de padrão químico",
COALESCE(NULLIF(data->'responseData'->3->'response'->>'stable_isotopes', '[]'), 'Não especificado') AS "Isótopos Estáveis e Radiogênicos",
COALESCE(NULLIF(data->'responseData'->3->'response'->>'trace_elements_and_rare_earths', '[]'), 'Não especificado') AS "Elementos traço e terras raras",
-- COALESCE(NULLIF(data->'responseData'->3->'response'->>'structural_mapping', '[]'), 'Não especificado') AS "Geologia estrutural da região",
-- COALESCE(NULLIF(data->'responseData'->4->'response'->>'structureMineralizationRelation', '[]'), 'Não especificado') AS "Relação estrutura-mineralização",
COALESCE(NULLIF(data->'responseData'->4->'response'->>'geophysical_signatures', '[]'), 'Não especificado') AS "Assinaturas geofísicas",
COALESCE(NULLIF(data->'responseData'->4->'response'->>'mineralization_signatures', '[]'), 'Não especificado') AS "Assinaturas de mineralização",
COALESCE(NULLIF(data->'responseData'->5->'response'->>'additional_information', '[]'), 'Não especificado') AS "Informações adicionais de mineralização",
COALESCE(NULLIF(data->'responseData'->6->'response'->>'estimates', '[]'), 'Não especificado') AS "Estimativas de quantidade de mineralização",
COALESCE(NULLIF(data->'responseData'->7->'response'->>'potential', '[]'), 'Não especificado') AS "Potencial de descoberta",
COALESCE(NULLIF(data->'responseData'->8->'response'->>'strengths', '[]'), 'Não especificado') AS "Pontos fortes",
COALESCE(NULLIF(data->'responseData'->8->'response'->>'investment_risk', '[]'), 'Não especificado') AS "Risco de investimento",
COALESCE(NULLIF(data->'responseData'->8->'response'->>'economic_potential', '[]'), 'Não especificado') AS "Potencial econômico",
COALESCE(NULLIF(data->'responseData'->9->'response'->>'explanation', '[]'), 'Não especificado') AS "Explicação da favorabilidade",
COALESCE(NULLIF(data->'responseData'->9->'response'->>'favorability', '[]'), 'Não especificado') AS "Favorabilidade"
FROM
"Future Mining"."Extraction" e
GROUP BY
e."createdAt",
e.id,
e.name,
data->'responseData'->0->'response'->'mineralizations'->'type';