Spaces:
Running
Running
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 | |
-- Consolidar quantidade, tipo de mineralização e minerais com concentração | |
CASE | |
WHEN jsonb_typeof(data->'responseData'->0->'response'->'mineralizations') = 'array' THEN | |
array_to_string( | |
ARRAY( | |
SELECT CONCAT( | |
-- Mostra a quantidade e o tipo de mineralização | |
mineralization->>'quantity', ' de ', | |
mineralization->>'type', | |
-- Condicional para incluir minerais apenas se existirem | |
CASE | |
WHEN jsonb_typeof(mineralization->'minerals') = 'array' | |
AND jsonb_array_length(mineralization->'minerals') > 0 THEN | |
': ' || array_to_string( | |
ARRAY( | |
SELECT CONCAT( | |
mineral->>'name', | |
' (', mineral->>'concentration', ')' | |
) | |
FROM jsonb_array_elements(mineralization->'minerals') AS mineral | |
WHERE mineral IS NOT NULL -- Ignora nulos | |
), ', ' | |
) | |
ELSE '' -- Não mostra nada se não houver minerais | |
END | |
) | |
FROM jsonb_array_elements(data->'responseData'->0->'response'->'mineralizations') AS mineralization | |
WHERE mineralization IS NOT NULL -- Ignora nulos | |
), '; ' | |
) | |
ELSE NULL -- Retorna NULL se o array não existir | |
END 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'->4->'response'->>'mineralization_signatures', '[]'), 'Não especificado') AS "Assinaturas de mineralização", -- Foi decidido que este era melhor | |
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 | |
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 | |
WHERE sedimentares IS NOT NULL -- Ignora elementos nulos | |
), '; ' | |
) | |
ELSE '' -- Retorna vazio se o array não existir | |
END AS "Rochas sedimentares", | |
-- Rochas metamórficas | |
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 | |
WHERE metam IS NOT NULL | |
), '; ' | |
) | |
ELSE '' | |
END AS "Rochas metamórficas", | |
-- Rochas ígneas intrusivas | |
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 | |
WHERE igneas_i IS NOT NULL | |
), '; ' | |
) | |
ELSE '' | |
END AS "Rochas ígneas intrusivas", | |
-- Rochas ígneas extrusivas | |
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 | |
WHERE igneas_e IS NOT NULL | |
), '; ' | |
) | |
ELSE '' | |
END AS "Rochas ígneas extrusivas", | |
-- Rochas ígneas subvulcânicas | |
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 | |
WHERE igneas_sv IS NOT NULL | |
), '; ' | |
) | |
ELSE '' | |
END 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'->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 | |
ORDER BY | |
e."createdAt"; | |