add selectai

This commit is contained in:
Fernando Melo
2026-05-28 14:38:15 -03:00
parent 440b1cfadb
commit 052eb23d54
10 changed files with 581 additions and 112 deletions

View File

@@ -35,38 +35,55 @@ FROM parsed_markdown_files;
-- merchants
SELECT docs.category,
docs.name
docs.name,
docs.payment_processor
FROM parsed_markdown_files,
JSON_TABLE(data, '$.comercios[*]'
COLUMNS (
name VARCHAR2(4000) PATH '$.name',
category VARCHAR2(4000) PATH '$.category'
category VARCHAR2(4000) PATH '$.category',
payment_processor VARCHAR2(20) PATH '$.payment_processor'
)) docs
ORDER BY category, name;
-- beneficios por nivel
SELECT docs.nivel,
docs.percentual_reintegro,
docs.percentual_reintegro,
docs.monto_compra_minimo_gs,
docs.reintegro_maximo_gs
FROM parsed_markdown_files,
JSON_TABLE(data, '$.beneficios_por_nivel[*]'
COLUMNS (
nivel VARCHAR2(100) PATH '$.nivel',
percentual_reintegro NUMBER PATH '$.percentual_reintegro',
nivel VARCHAR2(20) PATH '$.nivel',
percentual_reintegro NUMBER PATH '$.percentual_reintegro',
monto_compra_minimo_gs NUMBER PATH '$.monto_compra_minimo_gs',
reintegro_maximo_gs NUMBER PATH '$.reintegro_maximo_gs'
)) docs
ORDER BY 1;
-- Tabela de benefícios
SELECT nivel, percentual_reintegro || '%' AS pct,
TO_CHAR(monto_compra_minimo_gs, '999G999G999') AS monto_min,
TO_CHAR(reintegro_maximo_gs, '999G999G999') AS reint_max
FROM parsed_markdown_files t,
JSON_TABLE(t.data, '$.beneficios_por_nivel[*]'
COLUMNS (
nivel VARCHAR2(20) PATH '$.nivel',
percentual_reintegro NUMBER PATH '$.percentual_reintegro',
monto_compra_minimo_gs NUMBER PATH '$.monto_compra_minimo_gs',
reintegro_maximo_gs NUMBER PATH '$.reintegro_maximo_gs'
))
ORDER BY nivel DESC;
-- Comércios por categoria
SELECT category, COUNT(*) AS qtd
SELECT category, payment_processor, COUNT(*) AS qtd
FROM parsed_markdown_files t,
JSON_TABLE(t.data, '$.comercios[*]'
COLUMNS (
category VARCHAR2(200) PATH '$.category'
category VARCHAR2(200) PATH '$.category',
payment_processor VARCHAR2(20) PATH '$.payment_processor'
))
GROUP BY category
GROUP BY category, payment_processor
ORDER BY qtd DESC;
@@ -75,37 +92,9 @@ SELECT
docs.data.promocao.titulo.string() as titulo,
docs.data.promocao.vigencia.data_inicio || ' a ' || docs.data.promocao.vigencia.data_fim as vigencia,
docs.data.medios_pago.rede as rede,
docs.data.medios_pago.qr_permitido as qr_permitido
docs.data.medios_pago.qr_permitido as qr_permitido,
docs.data.cuotas.maximo_sin_intereses as max_sin_intereses,
docs.data.acreditacao_reintegro.prazo_dias_habiles as prazo_dias_habiles
FROM parsed_markdown_files docs;
/* --------------------------------
DUALITY VIEW
-------------------------------- */
-- convert
DECLARE
schema_sql clob;
BEGIN
schema_sql := dbms_json_duality.infer_and_generate_schema(
json('{"tableNames" : [ "PARSED_MARKDOWN_FILES" ],
"viewNames" : [ "T" ],
"useFlexFields" : false,
"updatability" : true,
"sourceSchema" : "APP_USER"}')
);
execute immediate schema_sql;
dbms_json_duality.import(table_name => 'PARSED_MARKDOWN_FILES', view_name => 'T');
execute immediate 'rename T TO V_PARSED_MARKDOWN_FILES';
END;
/
SELECT * FROM T_ROOT;
SELECT * FROM T_BENEFICIOS_POR_NIVEL;
SELECT * FROM T_COMERCIOS;

View File

@@ -0,0 +1,46 @@
set serveroutput on
set long 999999
set linesize 200
set pagesize 5000
/* --------------------------------
DUALITY VIEW
-------------------------------- */
-- convert
DECLARE
schema_sql clob;
BEGIN
schema_sql := dbms_json_duality.infer_and_generate_schema(
json('{"tableNames" : [ "PARSED_MARKDOWN_FILES" ],
"viewNames" : [ "T" ],
"useFlexFields" : false,
"updatability" : true,
"sourceSchema" : "APP_USER"}')
);
execute immediate schema_sql;
dbms_json_duality.import(table_name => 'PARSED_MARKDOWN_FILES', view_name => 'T');
execute immediate 'rename T TO V_PARSED_MARKDOWN_FILES';
END;
/
SELECT * FROM T_ROOT;
SELECT * FROM T_COMERCIOS;
SELECT * FROM T_BENEFICIOS_POR_NIVEL;
SELECT * FROM T_ACREDITACAO_REINTEGRO;
SELECT * FROM T_CUOTAS;
SELECT * FROM T_MEDIOS_PAGO;
SELECT * FROM T_PROMOCAO;
SELECT * FROM T_VIGENCIA;
-- duality view collection
SELECT json_serialize(data returning clob pretty) AS json_data
FROM v_parsed_markdown_files;