Este documento contiene 32 consultas SQL aplicadas a tablas y datos de una base de datos de Oracle. La mayoría de las consultas realizan joins entre múltiples tablas, aplican filtros, funciones y cláusulas de agrupamiento para resumir y organizar la información requerida. Las consultas cubren temas como usuarios, tablas, índices, campos, constraints, vistas, secuencias y objetos de la base de datos, así como tablas relacionadas a clientes, facturas y estados.
Desarrollo (qué aplicar) - Normas y Estándares en la Programación Informática
101 queries sql aplicado - respuestas
1. – Curso de
SQL Aplicado
Del Diccionario de Datos de Oracle
1. De las tablas de: Todos los Usuarios y todas las tablas, mostrar:
a.Nombre de usuario.
b.Fecha en que fue creado el usuario
c.Cantidad de tablas por usuario.
En este query usted deberá ordenar descendente por:
a.nombre de usuario.
select usuarios.username
Usuario,
usuarios.created
Creado_el,
count(tablas.table_name) Cantidad_tablas_usuario
from all_users usuarios
inner join all_tables tablas
on usuarios.username = tablas.owner
group by usuarios.username,
usuarios.created
order by usuarios.username desc;
2. De la tablas de: Todas las tablas, Todos los índices, todos los campos del índice se necesita:
[Todas las Tablas]
Nombe de la tabla
Table Space Name
[Todos los índices]
Index Name
Index Type
Status
[Todos los campos del índice] Column Name
Column Position
select tablas.table_name
Nombre_tabla,
tablas.tablespace_name
Table_Space,
indices.index_name
Nombre_indice,
indices.index_type
Tipo_de_indice,
indices.status
Estatus_del_indice,
columnas_indice.column_name
Columna_en_indice,
columnas_indice.column_position Posicion_columna_indice
from all_tables
tablas
inner join all_indexes
indices
on tablas.table_name = indices.table_name
inner join all_ind_columns columnas_indice
on tablas.table_name = columnas_indice.table_name
and indices.table_name = columnas_indice.table_name;
3. De las tablas de: Todos los Constrainst y todos los campos de los constraints:
[Todos los Constraints]
Constraint Name
Constraint Type
[Todos los campos del Constraint] Constraint Name
select constraints.constraint_name
constraints.constraint_type
columnas_constraints.constraint_name
from all_constraints constraints
Nombre_constraint,
Tipo_constraint,
Nombre_constraint_campos
2. – Curso de
SQL Aplicado
inner join all_cons_columns columnas_constraints
on constraints.constraint_name = columnas_constraints.constraint_name
4. Con el uso de outer join cree una consulta que retorne todas las tablas que no tienen
constraints.
a. De todas las tablas y todos los comentarios de tablas:
[Todas las Tablas]
Nombe de la tabla
Table Space Name
[Todos los comentarios de tablas] Comments
(all_tables, all_tab_comments)
select tablas.table_name
Nombre_tabla,
tablas.tablespace_name
Table_space,
comentarios_tabla.comments Comentarios_tabla
from all_tables tablas
left outer join all_tab_comments comentarios_tabla
on tablas.table_name = comentarios_tabla.table_name
b. Con right outer join de todas las tablas y todos los comentarios de tablas muestre los campos que se le solicitan y en este
caso de aquellas tablas que no tienen comentario:
[Todas las Tablas]
Nombe de la tabla
Table Space Name
[Todos los comentarios de tablas] Comments
(all_tables, all_tab_comments)
select tablas.table_name
Nombre_tabla,
tablas.tablespace_name
Table_space,
comentarios_tabla.comments Comentarios_tabla
from all_tables tablas
right outer join all_tab_comments comentarios_tabla
on tablas.table_name = comentarios_tabla.table_name
where comentarios_tabla.comments is null
c. De una unión de todas las tablas y todos los índices, demuestre:
a.Nombre de la tabla.
b.Cantidad de Indices.
select tablas.table_name
Nombre_tabla,
count(indices.index_name) Cantidad_indices
from all_indexes indices
inner join all_tables tablas
on indices.table_name = tablas.table_name
group by tablas.table_name
5. Del query 1: "De las tablas de: Todos los Usuarios y todas las tablas" con un filtro que retorne
las tablas creadas a partir del 15 de diciembre del 2013.
select usuarios.username
Usuario,
usuarios.created
Creado_el,
count(tablas.table_name) Cantidad_tablas_usuario
from all_users usuarios
inner join all_tables tablas
3. – Curso de
SQL Aplicado
on
inner join
on
where
and
group by
usuarios.username = tablas.owner
all_objects objetos
tablas.table_name = objetos.object_name
objetos.object_type = 'TABLE'
objetos.created
> to_date('15122013','ddmmyyyy')
usuarios.username,
usuarios.created
order by usuarios.username desc;
6. De todos los campos de las tablas, todos los campos de constraints y todos los constraints:
[Todos los campos]
owner,
table_name,
column_id,
column_name,
data_type,
data_length,
data_precision,
data_scale,
nullable,
data_default
[Todos los campos de constraints] constraint_name {emplee left outer join sobre table_name y column_name, es decir
que no importa que no tenga columnas con constraint}
[Todos los constraints]
constraint_type, {emplee left outer join sobre constraint_name de all_cons_columns y
all_constraints es decir que no importa que no exista constraint}
search_condition,
index_name
select campos.owner,
campos.table_name,
campos.column_id,
campos.column_name,
campos.data_type,
campos.data_length,
campos.data_precision,
campos.data_scale,
campos.nullable,
campos.data_default,
campos_constraints.constraint_name,
constraints.constraint_type,
constraints.search_condition,
constraints.index_name
from all_tab_columns campos
left outer join all_cons_columns campos_constraints
on campos.table_name
= campos_constraints.table_name
and campos.column_name
= campos_constraints.column_name
left outer join all_constraints constraints
on campos_constraints.constraint_name = constraints.constraint_name
order by campos.column_id
7. Del query 6 "De todos los campos de las tablas, todos los campos de constraints y todos los
constraints" todos aquellos campos que constraints que contengan la letra 'P'
select campos.owner,
4. – Curso de
SQL Aplicado
campos.table_name,
campos.column_id,
campos.column_name,
campos.data_type,
campos.data_length,
campos.data_precision,
campos.data_scale,
campos.nullable,
campos.data_default,
campos_constraints.constraint_name,
constraints.constraint_type,
constraints.search_condition,
constraints.index_name
from all_tab_columns campos
left outer join all_cons_columns campos_constraints
on campos.table_name
= campos_constraints.table_name
and campos.column_name
= campos_constraints.column_name
left outer join all_constraints constraints
on campos_constraints.constraint_name = constraints.constraint_name
where campos_constraints.column_name
like '%P%'
order by campos.column_id
8. De la tabla de todos los objetos (all_objects) aquellos registros en donde el campo
object_type = 'TABLE'
select objetos.*
from all_objects objetos
where objetos.object_type = 'TABLE';
9. De la tabla de todos los objetos desplegar object_type con un conteo por el valor de ese
campo agrupado por ese campo y ordenado por ese mismo campo.
select objetos.object_type
Tipo_de_Objeto,
count(objetos.object_name) Cantidad_objeto
from all_objects objetos
group by objetos.object_type
order by objetos.object_type;
10. Del query anterior 9: "De la tabla de todos los objetos desplegar object_type con un
conteo..." en donde la fecha created es mayor que el 10 de diciembre del 2013.
select objetos.object_type
Tipo_de_Objeto,
count(objetos.object_name) Cantidad_objeto
from all_objects objetos
where objetos.created > to_date('10122013','ddmmyyyy')
group by objetos.object_type
order by objetos.object_type
11. De la tabla de todos los constraints, desplegar aquellas tablas que tienen más de dos (2)
constraint {se espera el uso de count, group by y having}
select constraints.table_name
nombre_tabla,
count(constraints.constraint_name) cantidad_constraints
from all_constraints constraints
group by constraints.table_name
having count(constraints.constraint_name) > 2
5. – Curso de
SQL Aplicado
12. De la tabla de todas las vistas (all_views) aquellas vistas cuyo nombre contienen la palabra
CLIE o la palabra FACT o la palabra TIPO {se espera el uso de like y or}.
select
from
where
or
or
vistas.view_name
all_views vistas
vistas.view_name like '%CLIE%'
vistas.view_name like '%FACT%'
vistas.view_name like '%TIPO%';
13. De la tabla de todas las secuencias (all_sequences) aquellas cuyo minvalue están en los
valores 20, 100, 1000 y 500. {Se espera el uso de IN}
select secuencias.*
from all_sequences secuencias
where secuencias.min_value in (20,100, 1000,500)
14. De la tabla de todos los objetos el campo object_type sus distintos valores cuando el
object_type no contiene en su nombre las letras: EDI, SEQ, SCHE, PROC. {Se espera el uso de
distinct y not like}.
select
from
where
and
and
and
distinct object_type
all_objects
object_type not like
object_type not like
object_type not like
object_type not like
'%EDI%'
'%SEQ%'
'%SCHE%'
'%PROC%'
15. De todos los objetos, el nombre del objeto, la fecha de creación, para los objetos tipo Vista y
cuya fecha de creación está entre el primero y el quince de diciembre del 2013. {Se espera el uso
de to_date() y betwen}
select objetos.object_name Nombre_objeto,
objetos.created
Creado_el
from all_objects objetos
where objetos.object_type = 'VIEW'
and objetos.created
between to_date('01122013','ddmmyyyy') and
to_date('15122013','ddmmyyyy')
16. De la tabla de todos los objetos: el tipo de objeto, la fecha de creación y un conteo por día.
Cuando los objetos han sido creados entre el 02 y el 29 de diciembre del 2013, ordenada la
información por tipo de objeto y fecha.
select objetos.object_type
Tipo_objeto,
trunc(objetos.created)
Creado_el,
count(objetos.object_name) Cantidad_objetos
from all_objects objetos
where objetos.created
between to_date('02122013','ddmmyyyy') and
to_date('29122013','ddmmyyyy')
group by objetos.object_type,
trunc(objetos.created)
order by objetos.object_type,
trunc(objetos.created)
6. – Curso de
SQL Aplicado
17. De la tabla de todas las tablas el nombre de ellas cuyas primeras tres letras no son TBL. {Se
espera el uso de substr y != o <>}.
select tablas.table_name Nombre_tabla
from all_tables tablas
where substr(tablas.table_name, 1,3) != 'TBL'
18. Del query anterior 17, cuyas primeras tres letras no estén entre: TBL, TCG,TES.
select tablas.table_name Nombre_tabla
from all_tables tablas
where substr(tablas.table_name, 1,3) not in ('TBL', 'TCG','TES')
19. De la tabla de todos los campos por tabla, aquellas tablas que tienen más de 20 campos.
select campos_tablas.table_name
Nombre_tabla,
count(campos_tablas.column_name) Cantidad_campos
from all_tab_columns campos_tablas
group by campos_tablas.table_name
having count(campos_tablas.column_name) > 20
20. De la tabla de todos los índices los distintos valores del campo index_type.
select distinct indices.index_type tipo_indice
from all_indexes indices
21. De la tabla de todos los objetos, el nombre y tipo de objeto cuyo año de creación es 2010.
select objetos.object_type tipo_objeto,
objetos.object_name nombre_objeto
from all_objects objetos
where to_char(objetos.created,'yyyy') = '2010';
22. De la tabla de todos los constraints aquellos cuyo tipo es: P.
select constraints.constraint_name
from all_constraints constraints
where constraints.constraint_type = 'P';
23. De la tabla de todos los constraints aquellos cuyo tipo es P, el propietario es igual al usuario
que está realizando el query y el estatus es distinto de ENABLED.
select
from
where
and
and
constraints.constraint_name
all_constraints constraints
constraints.constraint_type = 'P'
constraints.owner
= user
constraints.status
= 'ENABLED'
24. De todas las tablas el nombre de ellas con la primer letra en mayúsculas.
select initcap(tablas.table_name)
nombre_tabla
7. – Curso de
SQL Aplicado
from all_tables tablas
25. De todos los objetos de la base de datos, aquellos cuyo campo last_ddl_time es mayor a la
fecha 10/12/2013.
select objetos.object_name Nombre_del_objeto
from all_objects objetos
where objetos.last_ddl_time > to_date('10122013','ddmmyyyy')
De tablas del curso
26. Tabla de clientes con su estatus, desplegando identificador de cliente, nombre completo en
un solo campo, identificador de estatus del cliente y leyenda del estatus del cliente.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
cliente.id_estatus,
estatus.leyenda_estatus Estatus_Cliente
from tbl_maestra_cliente cliente
inner join tbl_maestra_estatus estatus
on cliente.id_estatus = estatus.id_estatus
27. De clientes, su identificador, identificador de tipo de cliente y leyenda de tipo de cliente.
select cliente.id_cliente,
cliente.id_tipo_cliente,
tipo_cliente.leyenda_tipo_cliente Tipo_cliente
from tbl_maestra_cliente
cliente
inner join tbl_maestra_tipo_cliente tipo_cliente
on cliente.id_tipo_cliente = tipo_cliente.id_tipo_cliente
28. De clientes, su identificador, nombres separado todo, identificador de serie de factura y
serie asociada al cliente.
select cliente.id_cliente,
cliente.id_serie_factura,
series.serie Serie_factura
from tbl_maestra_cliente
cliente
inner join tbl_maestra_serie_factura series
on cliente.id_serie_factura = series.id_serie_factura
8. – Curso de
SQL Aplicado
29. De cliente, su identificador, su nombre completo todo junto, su identificador de estatus,
leyenda de estatus, identificador de tipo de cliente, leyenda de tipo de cliente, identificador de
serie de factura asociado al cliente, serie de factura asociado.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
cliente.id_estatus,
estatus.leyenda_estatus Estatus_Cliente,
cliente.id_tipo_cliente,
tipo_cliente.leyenda_tipo_cliente Tipo_cliente,
cliente.id_serie_factura,
series.serie Serie_factura
from tbl_maestra_cliente cliente
inner join tbl_maestra_estatus estatus
on cliente.id_estatus = estatus.id_estatus
inner join tbl_maestra_tipo_cliente tipo_cliente
on cliente.id_tipo_cliente = tipo_cliente.id_tipo_cliente
inner join tbl_maestra_serie_factura series
on cliente.id_serie_factura = series.id_serie_factura
30. De cliente y datos de facturación, identificador de cliente, nombres del cliente de la maestra,
nombres separado todo, nit, para ese cliente si posee datos distintos de factura, demostrar
nombres facturables, nit y dirección.
select cliente.id_cliente,
cliente.primer_nombre,
cliente.segundo_nombre,
cliente.tercer_nombre,
cliente.primer_apellido,
cliente.segundo_apellido,
cliente.nit,
datos_factura.primer_nombre
Primer_nombre_factura,
datos_factura.segundo_nombre
Segundo_nombre_factura ,
datos_factura.tercer_nombre
Tercer_nombre_factura,
datos_factura.primer_apellido
Primer_apellido_factura,
datos_factura.segundo_apellido segundo_apellido_factura,
datos_factura.nit
nit_factura,
datos_factura.direccion
direccion_factura
from tbl_maestra_cliente cliente
left outer join tbl_cliente_factura datos_factura
on cliente.id_cliente = datos_factura.id_cliente
31. Del cliente y sus facturas, id de cliente, nombre del cliente todo junto, datos completos de la
tabla de factura, asociando el estatus de la factura y demostrando la leyenda del estatus de la
factura.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
factura.*,
estatus_factura.leyenda_estatus Estatus_factura
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
inner join tbl_maestra_estatus estatus_factura
on factura.id_estatus = estatus_factura.id_estatus
32. De facturas y su estatus, identificador de factura, fechas relacionadas a la factura y su
estatus.
9. – Curso de
SQL Aplicado
select facturas.id_factura,
facturas.fecha_creacion,
facturas.fecha_emision,
facturas.fecha_vencimiento,
facturas.fecha_inicia_ciclo,
facturas.fecha_finaliza_ciclo,
facturas.id_estatus,
estatus.leyenda_estatus estatus_factura
from tbl_maestra_facturas facturas
inner join tbl_maestra_estatus estatus
on facturas.id_estatus = estatus.id_estatus
33. Del cliente y su cuenta corriente, identificador del cliente, nombre todo separado y todos los
datos de la cuenta corriente.
select cliente.id_cliente,
cliente.primer_nombre,
cliente.segundo_nombre,
cliente.tercer_nombre,
cliente.primer_apellido,
cliente.segundo_apellido,
cuenta_corriente.*
from tbl_maestra_cliente cliente
inner join tbl_cuenta_corriente cuenta_corriente
on cliente.id_cliente = cuenta_corriente.id_cliente
34. De la factura y sus pagos, identificador de la factura y todos los datos de los pagos.
select facturas.id_factura,
pagos.*
from tbl_maestra_facturas
facturas
left outer join tbl_maestra_pagos_factura pagos
on facturas.id_cliente = pagos.id_cliente
and facturas.id_factura = pagos.id_factura
35. De los pagos y su estatus, demostrando identificador de pago, identificador de factura,
monto del pago, identificador del estatus del pago y leyenda del estatus del pago.
select pagos.id_pago,
pagos.id_estatus,
pagos.id_factura,
pagos.monto_pago,
pagos.id_estatus,
estatus.leyenda_estatus estatus_pago
from tbl_maestra_pagos_factura pagos
inner join tbl_maestra_estatus
estatus
on pagos.id_estatus = estatus.id_estatus
36. De los ajustes y su estatus, demostrando identificador de ajuste, identificador de factura,
monto del ajuste, identificador del estatus del ajuste y leyenda del estatus del ajuste.
select ajustes.id_ajuste,
ajustes.id_estatus,
ajustes.id_factura,
ajustes.monto_pago,
ajustes.id_estatus,
estatus.leyenda_estatus estatus_pago
from tbl_maestra_ajustes_factura ajustes
inner join tbl_maestra_estatus
estatus
on ajustes.id_estatus = estatus.id_estatus
10. – Curso de
SQL Aplicado
37. De la factura, sus pagos y sus ajustes, con estatus de pagos y ajustes, demostrando datos
importantes según usted considere.
select facturas.id_factura,
facturas.id_cliente,
facturas.fecha_vencimiento,
pagos.*,
ajustes.*
from tbl_maestra_facturas
facturas
left outer join tbl_maestra_pagos_factura pagos
on facturas.id_cliente = pagos.id_cliente
and facturas.id_factura = pagos.id_factura
left outer join tbl_maestra_ajustes_factura ajustes
on facturas.id_cliente = ajustes.id_cliente
and facturas.id_factura = ajustes.id_factura
38. Del cliente y su cuenta corriente, cantidad de facturas, promedio facturado, total facturado.
select cliente.id_cliente,
count(cuenta_corriente.id_factura)
Cantidad_facturas,
avg(cuenta_corriente.total_facturado) Promedio_facturado,
sum(cuenta_corriente.total_facturado) Total_facturado
from tbl_maestra_cliente cliente
inner join tbl_cuenta_corriente cuenta_corriente
on cliente.id_cliente = cuenta_corriente.id_cliente
group by cliente.id_cliente
39. Del cliente y su cuenta corriente, monto más alto facturado, monto más bajo facturado.
select cliente.id_cliente,
min(cuenta_corriente.total_facturado) Monto_mas_bajo_facturado,
max(cuenta_corriente.total_facturado) Monto_mas_alto_facturado
from tbl_maestra_cliente cliente
inner join tbl_cuenta_corriente cuenta_corriente
on cliente.id_cliente = cuenta_corriente.id_cliente
group by cliente.id_cliente
40. Del pago datos que usted crea importantes, su tipo de pago, su origen y su operador.
select pagos.id_pago,
pagos.id_factura,
pagos.id_cliente,
pagos.fecha_pago,
pagos.monto_pago,
pagos.id_origen_pago,
origen.leyenda_origen,
pagos.id_operador_pago,
operador.descripcion_operador
from tbl_maestra_pagos_factura pagos
inner join tbl_origen_pago
origen
on pagos.id_origen_pago = origen.id_origen_pago
inner join tbl_operador_pago
operador
on pagos.id_operador_pago = operador.id_operador_pago
41. Del ajuste datos que usted crea importantes, su tipo de ajuste, su origen y su operador.
select ajustes.id_ajuste,
ajustes.id_factura,
ajustes.id_cliente,
ajustes.fecha_ajuste,
ajustes.monto_pago,
ajustes.id_origen_pago,
origen.leyenda_origen,
ajustes.id_operador_pago,
11. – Curso de
from
inner join
on
inner join
on
SQL Aplicado
operador.descripcion_operador
tbl_maestra_ajustes_factura ajustes
tbl_origen_ajuste
origen
ajustes.id_origen_pago = origen.id_origen_ajuste
tbl_operador_ajuste
operador
ajustes.id_operador_pago = operador.id_operador_ajuste
42. Del cliente y sus facturas, datos que usted considere importantes, más días transcurridos
desde la fecha de vencimiento de la factura y el día en que usted corre el query.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
factura.id_factura,
factura.fecha_emision,
factura.total_facturado,
factura.fecha_vencimiento,
trunc(sysdate-factura.fecha_vencimiento) Dias_vencida
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
43. Del cliente y sus facturas, datos importantes de aquellas facturas que tienen entre 31 y 61
días de vencimiento.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
factura.id_factura,
factura.fecha_emision,
factura.total_facturado,
factura.fecha_vencimiento,
trunc(sysdate-factura.fecha_vencimiento) Dias_vencida
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
where trunc(sysdate-factura.fecha_vencimiento) between 31 and 61
44. Del cliente, sus facturas y su cuenta corriente, datos importantes de aquellas facturas que
tienen entre 31 y 61 días de vencimiento y su saldo es mayor a cero.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
factura.id_factura,
factura.fecha_emision,
factura.total_facturado,
factura.fecha_vencimiento,
trunc(sysdate-factura.fecha_vencimiento) Dias_vencida,
cuenta_corriente.saldo_factura
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
inner join tbl_cuenta_corriente cuenta_corriente
on cuenta_corriente.id_cliente = cliente.id_cliente
and cuenta_corriente.id_cliente = factura.id_cliente
and cuenta_corriente.id_factura = factura.id_factura
where trunc(sysdate-factura.fecha_vencimiento) between 31 and 61
and cuenta_corriente.saldo_factura
> 0
45. Del cliente y sus facturas, datos importantes y cantidad de facturas con más de un día
vencidas.
12. – Curso de
SQL Aplicado
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
factura.id_factura,
factura.fecha_emision,
factura.total_facturado,
factura.fecha_vencimiento,
trunc(sysdate-factura.fecha_vencimiento) Dias_vencida
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
where trunc(sysdate-factura.fecha_vencimiento) > 1
46. Del cliente y sus facturas, demostrando la fecha más baja y alta de emisión de facturas.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
min(factura.fecha_emision) Fecha_mas_baja_emision,
max(factura.fecha_emision) Fecha_mas_alta_emision
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
group by cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido
47. Del cliente, sus facturas y su cuenta corriente, identificador del cliente, nombre completo
junto, monto facturado total, monto pagado total, monto ajustado total, monto de saldo total y
cantidad de días vencidas más alto.
select cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido Nombre_completo,
sum(factura.total_facturado)
facturado_total,
sum(cuenta_corriente.total_pagado)
pagado_total,
sum(cuenta_corriente.total_ajustado)
ajustado_total,
sum(cuenta_corriente.saldo_factura)
saldo_total,
max(trunc(sysdate-factura.fecha_vencimiento)) Dias_vencido_mas_alto
from tbl_maestra_cliente cliente
inner join tbl_maestra_facturas factura
on cliente.id_cliente = factura.id_cliente
inner join tbl_cuenta_corriente cuenta_corriente
on cuenta_corriente.id_cliente = cliente.id_cliente
and cuenta_corriente.id_cliente = factura.id_cliente
and cuenta_corriente.id_factura = factura.id_factura
group by cliente.id_cliente,
cliente.primer_nombre||' '||cliente.segundo_nombre||' '||cliente.tercer_nombre||'
'||cliente.primer_apellido||' '||cliente.segundo_apellido
48. De los pagos y su origen con un filtro que permita indicar un origen en específico.
select pagos.id_pago,
pagos.id_factura,
pagos.id_cliente,
pagos.fecha_pago,
pagos.monto_pago,
pagos.id_origen_pago,
origen.leyenda_origen
from tbl_maestra_pagos_factura pagos
inner join tbl_origen_pago
origen
on pagos.id_origen_pago = origen.id_origen_pago
where pagos.id_origen_pago = 1
13. – Curso de
SQL Aplicado
49. De los pagos, su estatus, su origen y su operador, demostrar para un operador (filtro) en
específico, datos del pago, su estatus, su origen y su operador.
select pagos.id_pago,
pagos.id_factura,
pagos.id_cliente,
pagos.fecha_pago,
pagos.monto_pago,
pagos.id_origen_pago,
origen.leyenda_origen,
pagos.id_operador_pago,
operador.descripcion_operador,
pagos.id_estatus,
estatus.leyenda_estatus estatus_pago
from tbl_maestra_pagos_factura pagos
inner join tbl_origen_pago
origen
on pagos.id_origen_pago = origen.id_origen_pago
inner join tbl_operador_pago
operador
on pagos.id_operador_pago = operador.id_operador_pago
inner join tbl_maestra_estatus
estatus
on pagos.id_estatus
= estatus.id_estatus
where pagos.id_operador_pago = 2
50. De los pagos y su estatus, cantidad de pagos por leyenda de estatus.
select count(pagos.id_estatus) Cantidad_pagos,
estatus.leyenda_estatus estatus_pago
from tbl_maestra_pagos_factura pagos
inner join tbl_maestra_estatus
estatus
on pagos.id_estatus = estatus.id_estatus
group by estatus.leyenda_estatus
Queries miscelaneos
51. Sabiendo que la primer fecha en que se emitiría una factura en el Sistema con tablas
TBL_ es: 21/11/2000, construya un query que indique la cantidad de meses (en enteros) entre hoy
y esa fecha.
select trunc(months_between(sysdate, to_date('21112000','ddmmyyyy'))) Meses_Facturar
from dual;
52. Sabiendo que la fecha de Inicio de ciclo de facturación es 21 de cada mes, la de fin de
ciclo es un mes más que la de inicio, la de emisión es la de fin de ciclo y la de vencimiento es un
mes más que la de emisión, construya un query que retorne esas fechas.
select :fecha_facturacion,
add_months(:fecha_facturacion,1) Fecha_fin_ciclo,
add_months(:fecha_facturacion,1) Fecha_emision,
add_months(:fecha_facturacion,2) Fecha_emision
from dual
53. Basado en la tabla tbl_fechas_ciclos y teniendo la fecha de Activo de un cliente en
01/06/2013, construya un query que retorne todos los campos de esa tabla para su facturación
próxima.
14. – Curso de
SQL Aplicado
select ciclos.id_ciclo,
ciclos.fecha_inicia_ciclo,
ciclos.fecha_finaliza_ciclo,
ciclos.fecha_emision,
ciclos.fecha_vencimiento
from tbl_fechas_ciclos ciclos
where :fecha_activo between ciclos.fecha_inicia_ciclo and ciclos.fecha_finaliza_ciclo
54. Con la misma lógica del query anterior, una la tabla de clientes con la tabla de Fechas
para los ciclos y demuestre de clientes el ID y de la tabla de fechas, todos sus campos.
select ciclos.id_ciclo,
ciclos.fecha_inicia_ciclo,
ciclos.fecha_finaliza_ciclo,
ciclos.fecha_emision,
ciclos.fecha_vencimiento
from tbl_maestra_cliente cliente
inner join tbl_fechas_ciclos
ciclos
on cliente.id_ciclo = ciclos.id_ciclo
where cliente.fecha_activo between ciclos.fecha_inicia_ciclo and ciclos.fecha_finaliza_ciclo
55. De la unión de user_sys_privs y all_users demuestre todos los datos de ambas tablas
sin importar si hay datos en una en relación a la otra.
select
from
full outer join
on
*
user_sys_privs privilegios
all_users
usuarios
privilegios.username = usuarios.username
56. De la cadena '*MIN=57789964*PID=205*RES=SUC*' cree un query que obtenga el
valor de PID.
select :cadena,
instr(:cadena, :cadena_buscar),
substr(:cadena, instr(:cadena, :cadena_buscar), length(:cadena)) pid_res,
instr(substr(:cadena, instr(:cadena, :cadena_buscar), length(:cadena)), '*') res,
substr(:cadena, instr(:cadena, :cadena_buscar), instr(substr(:cadena, instr(:cadena,
:cadena_buscar), length(:cadena)), '*')-1) pid
from dual
57. De tbl_maestra_cliente y tbl_cliente_factura los datos que usted crea útiles para
mostrar en un reporte los clientes que tienen datos distintos para facturar, tome en cuenta que si
no hay datos para facturar, siempre debe de mostrar los datos de la maestra de clientes.
select cliente.id_cliente,
cliente.primer_nombre,
cliente.segundo_nombre,
cliente.tercer_nombre,
cliente.primer_apellido,
cliente.segundo_apellido,
cliente.nit,
cliente.direccion,
datos_factura.primer_nombre
primer_nombre_factura,
datos_factura.segundo_nombre
segundo_nombre_factura,
datos_factura.tercer_nombre
tercer_nombre_factura,
datos_factura.primer_apellido primer_apellido_factura,
datos_factura.segundo_apellido segundo_apellido_factura,
datos_factura.nit
nit_factura,
datos_factura.direccion
direccion_factura
from tbl_maestra_cliente cliente
left outer join tbl_cliente_factura datos_factura
15. – Curso de
SQL Aplicado
on cliente.id_cliente = datos_factura.id_cliente
58. Del diccionario de datos se necesita que cree un query que permita hacer el create de
cualquier tabla, incluyendo, campos, tipo, ancho, valor default, constraints.
select campos.column_name,
campos.data_type,
campos.data_length,
campos.data_precision,
campos.data_scale,
campos.nullable,
campos.data_default data_default,
campos_constraints.constraint_name,
constraints.constraint_type,
constraints.search_condition,
constraints.r_constraint_name,
referencia_constraint.table_name,
referencia_constraint.column_name
from all_tab_columns campos
left outer join all_cons_columns campos_constraints
on campos.table_name = campos_constraints.table_name
and campos.column_name = campos_constraints.column_name
left outer join all_constraints constraints
on campos_constraints.constraint_name = constraints.constraint_name
left outer join all_cons_columns referencia_constraint
on constraints.r_constraint_name = referencia_constraint.constraint_name
where campos.table_name = :table_name
order by campos.column_id
59. Cree un query que muestre el primer día del año según la fecha del Sistema, también el primer
día del mes.
select trunc(sysdate, 'yyyy') primer_dia_anio,
trunc(sysdate, 'mm')
primer_dia_mes
from dual
60. Diseñe un query que demuestre el primer día del mes y el último día del mes.
select trunc(sysdate, 'mm')
primer_dia_mes,
add_months(trunc(sysdate, 'mm'),1)-1 ultimo_dia_mes
from dual
61. Diseñe un query que demuestre la fecha así: 'Viernes 3 enero 2014'.
select to_char(sysdate, 'day dd month yyyy','nls_date_language=spanish')
from dual
62. Construya un query que busque todos los pagos validos de tbl_maestra_pagos.
select pagos.*
from tbl_maestra_pagos_factura pagos
where pagos.id_estatus = 8
63. De la cadena '*MIN=57789964*PID=205*RES=SUC*' se necesita que los * sean
reemplazados por %.
16. – Curso de
SQL Aplicado
select replace(:cadena, '*', '%')
from dual
64. Selecciones los datos de la tabla all_tab_privs_recd cuando el campo grantee = user.
64. Selecciones los datos de la tabla all_tab_privs_recd cuando el campo grantee = user.
Select * from all_tab_privs_recd where grantee = user
65. Cree un select con union de los datos de table_privilege_map y system_privilege_map.
select privilege,
name
from table_privilege_map
union
select privilege,
name
from system_privilege_map
66. Diseñe un query que muestre el usuario que más objetos ha creado en la base de datos.
select usuario,
cantidad
from (
select objetos.owner usuario,
count(object_name) cantidad
from all_objects objetos
group by objetos.owner
order by cantidad desc
) objetos_creados
where rownum = 1
67. Construya un query que una tbl_maestra_cliente con tbl_maestra_ciclos y que
muestre datos significativos.
select cliente.id_cliente,
cliente.primer_nombre,
cliente.primer_apellido,
cliente.fecha_activo,
ciclos.id_ciclo,
ciclos.leyenda_ciclo
from tbl_maestra_cliente cliente
inner join tbl_maestra_ciclos ciclos
on cliente.id_ciclo = ciclos.id_ciclo
order by cliente.id_cliente
68. Diseñe un query que una tbl_maestra_ciclos y tbl_fechas_ciclos y muestre datos
significativos.
select ciclos.id_ciclo,
ciclos.leyenda_ciclo,
fechas_ciclo.*
from tbl_maestra_ciclos ciclos
inner join tbl_fechas_ciclos fechas_ciclo
on ciclos.id_ciclo = fechas_ciclo.id_ciclo
69. Construya un query que permita obtener los ajustes válidos a un período de tiempo.
Esto de tbl_maestra_ajustes_factura.
17. – Curso de
select
from
where
and
SQL Aplicado
*
tbl_maestra_ajustes_factura ajustes
ajustes.id_estatus = :id_estatus_valido
(ajustes.fecha_ajuste >= :fecha_inicio and ajustes.fecha_ajuste <= :fecha_fin)
70. Construya un query que permita obtener los pagos válidos a un período de tiempo.
Esto de tbl_maestra_pagos_factura.
select
from
where
and
*
tbl_maestra_pagos_factura pagos
pagos.id_estatus = :id_estatus_valido
(pagos.fecha_pago >= :fecha_inicio and pagos.fecha_pago <= :fecha_fin)
71. Muestre todas aquellas tablas que tienen un campo llamado OBJECT_ID.
select *
from all_tab_columns
where column_name = 'OBJECT_ID'
72. Muestre la fecha menor y mayor de tbl_fechas_ciclos
select min(fechas_ciclo.fecha_inicia_ciclo) Menor,
max(fechas_ciclo.fecha_inicia_ciclo) Mayor
from tbl_fechas_ciclos fechas_ciclo
73. Cree un query que permita idienticar si la pareja de fecha_inicia_ciclo y
fecha_finaliza_ciclo están repetidas en tbl_fechas_ciclos
select fechas_ciclo.fecha_inicia_ciclo,
fechas_ciclo.fecha_inicia_ciclo,
count(fechas_ciclo.id_ciclo) cantidad
from tbl_fechas_ciclos fechas_ciclo
group by fechas_ciclo.fecha_inicia_ciclo,
fechas_ciclo.fecha_inicia_ciclo
having count(fechas_ciclo.id_ciclo) > 1
74. Diseñe un query que unido con el cliente las fechas de facturación, cuando el cliente
esta de Alta pero sin Actividad, muestre los días entre la fecha de activo y la fecha de fin de
factura.
select cliente.id_cliente,
cliente.fecha_activo,
fechas_ciclo.fecha_finaliza_ciclo,
trunc(fechas_ciclo.fecha_finaliza_ciclo-cliente.fecha_activo) dias_facturar
from tbl_maestra_cliente cliente
inner join tbl_fechas_ciclos
fechas_ciclo
on cliente.id_ciclo = fechas_ciclo.id_ciclo
where cliente.id_estatus
= 1
and cliente.fecha_activo between fechas_ciclo.fecha_inicia_ciclo and
fechas_ciclo.fecha_finaliza_ciclo
75. Construya un query que retorne la fecha del sistema en donde está instalada la base
de datos.
18. – Curso de
SQL Aplicado
select sysdate
from dual
De una cadena de valores ficticia de un CDR
76. Que sin importar cuál de las cadenas, retorne todos los datos de la cadena pasada,
basado en la tabla de valores de la cadena arriba indicando.
select substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
from dual
1,2)
3,9)
12,4)
16,8)
24,4)
28,13)
41,13)
54,14)
68,4)
72,4)
76,4)
Tipo_registro,
Archivo_id,
Codigo_uso,
Fecha,
Hora,
MIN,
Origen,
Destino,
Hora_Inicio,
Hora_Fin,
Duracion
77. De cualquiera de las cadenas retorne MIN, Codigo Uso, Hora Inicio, Hora Fin y
duración.
select substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
from dual
28,13)
12,4)
68,4)
72,4)
76,4)
MIN,
Codigo_uso,
Hora_Inicio,
Hora_Fin,
Duracion
78. De cualquiera de las cadenas retorne MIN, Codigo Uso, Hora Inicio, Hora Fin y
duración en minutos.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
(substr(:cadena, 76,4)/60) Duracion_minutos
from dual
79. De cualquiera de las cadenas retorne MIN, Codigo Uso, Hora Inicio, Hora Fin y
duración en minutos redondeado al minuto superior.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
ceil(substr(:cadena, 76,4)/60) Duracion_minutos_redondeado
from dual
19. – Curso de
SQL Aplicado
80. De cualquiera de las cadenas retorne MIN, Codigo Uso, Hora Inicio, Hora Fin y
duración en minutos redondeado al minuto Inferior.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
floor(substr(:cadena, 76,4)/60) Duracion_minutos_redondeado
from dual
81. De cualquiera de las cadenas retorne MIN, Codigo Uso, Origen, Destino, Hora Inicio,
Hora fin y duración en minutos redondeado al minuto superior.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 41,13) Origen,
substr(:cadena, 54,14) Destino,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
ceil(substr(:cadena, 76,4)/60) Duracion_redondeado
from dual
82. De cualquiera de las cadenas retorne MIN, Codigo Uso, Origen quitando de la
izquierda la cadena 00502, Destino quitando de la izquierda de la cadena 00502, Hora Inicio, Hora
fin y duración en minutos redondeado al minuto superior.
Solución 1: Incorrecta:
select substr(:cadena, 28,13)
substr(:cadena, 12,4)
ltrim(substr(:cadena, 41,13),'00502')
ltrim(substr(:cadena, 54,14),'00502')
substr(:cadena, 68,4)
substr(:cadena, 72,4)
ceil(substr(:cadena, 76,4)/60)
from dual
Solución correcta:
MIN,
Codigo_uso,
Origen,
Destino,
Hora_Inicio,
Hora_Fin,
Duracion_redondeado
select substr(:cadena, 28,13)
MIN,
substr(:cadena, 12,4)
Codigo_uso,
decode(substr(:cadena, 41,5), '00502',
substr(:cadena, 46,9),
substr(:cadena, 41,13)) Origen,
decode(substr(:cadena, 54,5),'00502',
substr(:cadena, 59,9),
substr(:cadena, 54,14)) Destino,
substr(:cadena, 68,4)
Hora_Inicio,
substr(:cadena, 72,4)
Hora_Fin,
ceil(substr(:cadena, 76,4)/60)
Duracion_redondeado
from dual
83. De cualquiera de las cadenas retorne MIN, Codigo Uso, Origen y país basado en
códigos proveídos arriba, Destino y país basado en códigos proveídos arriba, Hora Inicio, Hora fin
y duración en minutos redondeado al minuto superior.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
case
when substr(:cadena, 41,5) = '00502' then 'GUATEMALA'
when substr(:cadena, 41,3) = '001'
then 'ESTADOS UNIDOS'
else
'NO DEFINIDO'
20. – Curso de
SQL Aplicado
end as Pais_origen,
substr(:cadena, 41,13) Origen,
case
when substr(:cadena, 54,5) = '00502' then 'GUATEMALA'
when substr(:cadena, 54,3) = '001'
then 'ESTADOS UNIDOS'
else
'NO DEFINIDO'
end as Pais_destino,
substr(:cadena, 54,14) Destino,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
ceil(substr(:cadena, 76,4)/60) Duracion_redondeado
from dual
84. De cualquiera de las cadenas retorne MIN, Código Uso, descripción de uso según
tabla de Códigos de uso, Hora Inicio, Hora Fin y duración en minutos.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
decode(substr(:cadena, 12,4),
'8001',
'9090',
'9091',
'9100',
'No Definido'
) Descripcion_uso,
substr(:cadena, 68,4)
Hora_Inicio,
substr(:cadena, 72,4)
Hora_Fin,
substr(:cadena, 76,4)/60 Duracion_minutos
from dual
'Llamada
'Llamada
'Consuta
'Llamada
entrante',
Local',
Buzón de Voz',
Internacional',
85. De cualquiera de las cadenas retorne Tipo de Registro, Descripción de Tipo de
Registro, MIN, Código Uso, Hora Inicio, Hora Fin y duración.
select substr(:cadena, 1,3)
Tipo_registro,
decode(substr(:cadena, 1,2),
'H1', 'Encabezado',
'T1', 'Fin de Archivo de CDRs',
'D1', 'Línea de Detalle de CDR',
'No definido'
)
Descripcion_tipo_registro,
substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 41,13) Origen,
substr(:cadena, 54,14) Destino,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
substr(:cadena, 76,4) Duracion
from dual
86. De cualquiera de las cadenas retorne MIN, Codigo Uso, Fecha, Hora Inicio, Hora Fin y
duración, convierta en fecha Hora Inicio, agregue la fecha para ello, este valor será llamado
Fecha_hora_incio, haga lo mismo con Hora Fin.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 41,13) Origen,
substr(:cadena, 54,14) Destino,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
substr(:cadena, 76,4) Duracion_redondeado,
to_date(substr(:cadena, 16,8)||substr(:cadena, 68,4), 'ddmmyyyyhh24mi') Fecha_hora_inicio,
to_date(substr(:cadena, 16,8)||substr(:cadena, 72,4), 'ddmmyyyyhh24mi') Fecha_hora_fin
from dual
21. – Curso de
SQL Aplicado
87. De cualquiera de las cadenas retorne MIN, Codigo Uso, Fecha, Hora Inicio, Hora Fin y
duración, convierta en fecha Hora Inicio, agregue la fecha para ello, este valor será llamado
Fecha_hora_incio, haga lo mismo con Hora Fin, calcule la duración en base a Fecha_hora_inicio y
Fecha_hora_fin.
select substr(:cadena, 28,13) MIN,
substr(:cadena, 12,4) Codigo_uso,
substr(:cadena, 41,13) Origen,
substr(:cadena, 54,14) Destino,
substr(:cadena, 68,4) Hora_Inicio,
substr(:cadena, 72,4) Hora_Fin,
substr(:cadena, 76,4) Duracion_redondeado,
to_date(substr(:cadena, 16,8)||substr(:cadena, 68,4), 'ddmmyyyyhh24mi') Fecha_hora_inicio,
to_date(substr(:cadena, 16,8)||substr(:cadena, 72,4), 'ddmmyyyyhh24mi') Fecha_hora_fin,
to_date(substr(:cadena, 16,8)||substr(:cadena, 72,4), 'ddmmyyyyhh24mi') - to_date(substr(:cadena,
16,8)||substr(:cadena, 68,4), 'ddmmyyyyhh24mi') Duracion
from dual
88. De cualquiera de las cadenas retorne MIN quitando de la izquierda de la cadena los
valores '00502', Codigo Uso, Hora Inicio, Hora Fin y duración.
select decode(substr(:cadena, 28,5),
'00502', substr(:cadena, 33,8),
substr(:cadena, 28,13)
) MIN,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
substr(:cadena,
from dual
12,4)
Codigo_uso,
41,13) Origen,
54,14) Destino,
68,4)
Hora_Inicio,
72,4)
Hora_Fin,
76,4)
Duracion_redondeado
89. De cualquiera de las cadenas retorne MIN, fecha, hora_inicio, hora_fin, duración,
origen y destino, convirtiendo a número Min, Origen y Destino.
select substr(:cadena, 28,13)
MIN,
substr(:cadena, 12,4)
Codigo_uso,
to_number(substr(:cadena, 41,13)) Origen,
to_number(substr(:cadena, 54,14)) Destino,
substr(:cadena, 68,4)
Hora_Inicio,
substr(:cadena, 72,4)
Hora_Fin,
substr(:cadena, 76,4)
Duracion_redondeado
from dual
90. De cualquiera de las cadenas retorne MIN, fecha agregando el valor Hora , hora_inicio,
hora_fin, duración, origen y destino, convirtiendo a número Min, Origen y Destino.
select substr(:cadena, 28,13)
MIN,
substr(:cadena, 16,8)||' '||substr(:cadena, 68,4)||' '||substr(:cadena, 72,4)
Fecha_hora_inicio_fin,
substr(:cadena, 12,4)
Codigo_uso,
to_number(substr(:cadena, 41,13)) Origen,
to_number(substr(:cadena, 54,14)) Destino,
substr(:cadena, 68,4)
Hora_Inicio,
substr(:cadena, 72,4)
Hora_Fin,
substr(:cadena, 76,4)
Duracion_redondeado
from dual
22. – Curso de
SQL Aplicado
91. De cualquiera de las cadenas retorne MIN, fecha agregando el valor Hora convierta este
dato en fecha se llamará Fecha_hora_cdr, hora_inicio, hora_fin, duración, origen y destino,
convirtiendo a número Min, Origen y Destino.
select substr(:cadena, 28,13)
MIN,
substr(:cadena, 16,8)||' '||substr(:cadena, 24,4) Fecha_hora_cdr,
substr(:cadena, 12,4)
Codigo_uso,
to_number(substr(:cadena, 41,13)) Origen,
to_number(substr(:cadena, 54,14)) Destino,
substr(:cadena, 68,4)
Hora_Inicio,
substr(:cadena, 72,4)
Hora_Fin,
substr(:cadena, 76,4)
Duracion
from dual
92. De cualquiera de las cadenas retorne MIN, fecha agregando el valor Hora convierta este
dato en fecha se llamará Fecha_hora_cdr, origen ancho de origen, destino y ancho de destino.
select substr(:cadena, 28,13)
MIN,
substr(:cadena, 16,8)||' '||substr(:cadena, 24,4) Fecha_hora_cdr,
substr(:cadena, 12,4)
Codigo_uso,
substr(:cadena, 41,13) Origen,
length(substr(:cadena, 41,13)) ancho_origen,
substr(:cadena, 54,14) Destino,
length(substr(:cadena, 54,14)) ancho_destino
from dual
93. De cualquiera de las cadenas retorne si el tipo registro es encabezado: Tipo_registro,
Archivo_id, Codigo_uso, Fecha.
select decode(substr(:cadena, 1,2),
'H1',substr(:cadena, 1,2)||' '||substr(:cadena, 3,9)||'
'||substr(:cadena, 12,4), substr(:cadena, 16,8),
null
) Si_es_encabezado
from dual
94. De cualquiera de las cadenas retorne si el tipo registro es detalle: Fecha, Hora, Hora
Inicio, Hora Fin, MIN, Origen y Destino.
select decode(substr(:cadena, 1,2),
'D1',substr(:cadena, 16,8)||' '||substr(:cadena, 24,4)||'
'||substr(:cadena, 68,4)||' '||substr(:cadena, 72,4)||' '||substr(:cadena, 28,13)||' '||substr(:cadena,
41,13)||' '||substr(:cadena, 54,14),
null
) Si_es_encabezado
from dual
23. – Curso de
SQL Aplicado
95. Imaginando que hay una tabla así: tbl_cdr_original (Tipo_registro, Archivo_id,
Codigo_uso, Fecha_cdr, Hora_cdr, telefono, telefono_Origen, telefono_Destino, Hora_Inicio,
Hora_Fin, Dureacion), entonces con un query genera la instrucción insert para guardar cada
campo sin importar la cadena.
select 'tbl_cdr_original (Tipo_registro, Archivo_id, Codigo_uso, Fecha_cdr, Hora_cdr, telefono,
telefono_Origen, telefono_Destino, Hora_Inicio, Hora_Fin, Dureacion) values(' ||
substr(:cadena, 1,2)||','||substr(:cadena, 3,9)||','||substr(:cadena, 12,4)||','||substr(:cadena,
16,8)||','||substr(:cadena, 24,4)||','||substr(:cadena, 28,13)||','||substr(:cadena,
41,13)||','||substr(:cadena, 54,14)||','||substr(:cadena, 68,4)||','||substr(:cadena,
72,4)||','||substr(:cadena, 76,4)||');' Sentencia_Insercion
from dual
96. Imaginando que hay una tabla así: tbl_cdr_original (Tipo_registro, Archivo_id,
Codigo_uso, Fecha_cdr, Hora_cdr, telefono, telefono_Origen, telefono_Destino, Hora_Inicio, Hora_Fin,
Dureacion), entonces con un query genera la instrucción insert para guardar cada campo sin importar la
cadena, cuando el Tipo_registo es D1.
select decode(substr(:cadena, 1,2), 'D1',
'tbl_cdr_original (Tipo_registro, Archivo_id, Codigo_uso,
Fecha_cdr, Hora_cdr, telefono, telefono_Origen, telefono_Destino, Hora_Inicio, Hora_Fin, Dureacion)
values(' ||substr(:cadena, 1,2)||','||substr(:cadena, 3,9)||','||substr(:cadena,
12,4)||','||substr(:cadena, 16,8)||','||substr(:cadena, 24,4)||','||substr(:cadena,
28,13)||','||substr(:cadena, 41,13)||','||substr(:cadena, 54,14)||','||substr(:cadena,
68,4)||','||substr(:cadena, 72,4)||','||substr(:cadena, 76,4)||');',
NULL
)Sentencia_Insercion
from dual
97. Si el tipo de registro es detalle, retorne: Min convertido a número, origen convertido
a número, destino convertido a número.
select decode(substr(:cadena, 1,2), 'D1',
to_number(substr(:cadena, 28,13))||'
'||to_number(substr(:cadena, 41,13))||' '||to_number(substr(:cadena, 54,14)),
NULL
)valores
from dual
98. Si el tipo de registro es detalle, retorne: Min convertido a número, origen convertido
a número, destino convertido a número, fecha con hora agregado, convertido a fecha, Hora Inicio
con fecha agregado convertido a fecha, Hora fin con fecha agregado convertido a fecha .
select decode(substr(:cadena, 1,2), 'D1',
to_number(substr(:cadena, 28,13))||'
'||to_number(substr(:cadena, 41,13))||' '||to_number(substr(:cadena, 54,14))||'
'||to_date(substr(:cadena, 16,8)||substr(:cadena, 24,4), 'ddmmyyyyhh24mi')||' '||to_date(substr(:cadena,
16,8)||substr(:cadena, 68,4), 'ddmmyyyyhh24mi')||' '||to_date(substr(:cadena, 16,8)||substr(:cadena,
72,4), 'ddmmyyyyhh24mi'),
NULL
)Sentencia_Insercion
from dual
99. Si el tipo de registro es Encabezado o fin de archivo que demuestre el archivo id.
select decode(substr(:cadena, 1,2), 'H1',
substr(:cadena, 3,9),
24. – Curso de
SQL Aplicado
'T1',
substr(:cadena, 3,9),
NULL
) Archivo_id
from dual
100. Un query que retorne la leyenda 'He realizado 101 Queries... :-)'.
select 'He realizado 101 Queries... :-)'
from dual
101. Un query que retorne la leyenda 'Ahora si son 101'.
select 'Ahora si son 101'
from dual