Entradas

Mostrando entradas de junio, 2012

Borrar Filas Duplicadas

Siempre es bueno tener una llave única en las tablas del sistema; pero en algunos casos, cuando las llaves son autonumericas o no tiene llave, las inserciones se pueden volver un problema cuando los registro son repetidos y no hay forma de identificar uno del otro, sino solamente por la autonumerica o por el rowid. Puedes eliminar los registros uno a uno, o con uno de los siguientes script’s: Borra todos los registros que no esten en los minimos de la misma tabla. DELETE FROM departamento WHERE rowid NOT IN (        SELECT MIN(rowid)           FROM departamento d       GROUP BY D.departamento_id ) Similar a la anterior, pero sin el NOT IN DELETE FROM departamento A WHERE ROWID > ( SELECT min(rowid) FROM departamento B WHERE A.departamento_id = B.departamento_id); Ahora con Exists DELETE FROM departamento A WHERE EXISTS ( SELECT ‘x’ FROM departamento B WHERE A.departamento_id = B.departamento_id AND B.rowid > A.rowid);

Teletrabajo

Ya existe en Colombia una ley que reglamenta el teletrabajo con las mismas garantías de un trabajador presencial; este es un resumen del reglamento: Abc del teletrabajo

Encontrar el 2do o N valor mas alto o mas bajo

Es fácil encontrar el valor mas alto o mas bajo de una consulta de datos con las funcionas max() y min(); pero cuando se necesita el segundo o tercer valor mas alto, la cosa cambia un poco, de esta forma: select id from (select rownum r, id from trabajo order by id desc) where r=2; De esa forma tendremos la consulta ordenada de forma descendente pero tomando a partir de la fila 2.

Grouping Sets Oracle

Grouping Sets es una extension del Group By, esta permite crear cortes de agrupaciones en un listado de datos agrupados; por ejemplo, si queremos totalizar una consulta por departamento y trabajo, grouping sets haria un corte cada vez que cambie uno de los campos segun el orden que sean escritos y totalizaria lo que lleva hasta el momento. Dichas columnas de agrupacion seran nulas y el campo de agrupacion del select sera el totalizado: SELECT fact_1_id, fact_2_id, fact_3_id, SUM(sales_value) AS sales_value, GROUPING_ID(fact_1_id, fact_2_id, fact_3_id) AS grouping_id FROM dimension_tab GROUP BY GROUPING SETS((fact_1_id, fact_2_id), (fact_1_id, fact_3_id)) ORDER BY fact_1_id, fact_2_id, fact_3_id; FACT_1_ID FACT_2_ID FACT_3_ID SALES_VALUE GROUPING_ID ---------- ---------- ---------- ----------- ----------- 1 1 4363.55 1 1 2 4794.76 1 1 3