Análisis léxico sobre primera ocurrencia.
--Buenos días!
--Se tiene las siguientes estructura para el almacenamiento de registro de incidentes delictivos:
CREATE TABLE incidentes(
[fecha] date,
[hora] time,
[delito] nvarchar(255), --tipo de delito ej. Robo de vehículo
[detalle] nvarchar(255), --no relevante en este punto
[descripción] nvarchar(Max), --todo lo especificado en la denuncia.
[municipio] nvarchar(255),
[población] nvarchar(255),
[colonia] nvarchar(255)
)
go
--Lo deseado es establecer las marcas más robadas y la cantidad de ellas por sector (colonia), las marcas han sido guardadas en la siguiente estructura.
CREATE TABLE marcasVehiculos (
[nombre] nvarchar(255)
)
go
--La idea era usar likes con left outer joins, pero el problema que estoy trabajando con registros existentes y capturados al bravazo (por así decir): en descripción se tiene a quien se le robó, las placas, la marca y detalles de los asaltantes. Por ejemplo:
Fecha: 2011-10-05
Hora: 17:23:00
Delito: ROBO VIOLENTO DE VEHÍCULO
Detalle: DE SERVICIO PARTICULAR
Descripción: ROBO VIOELNTO DE VEHÍCULO, ES UN NISSAN TSURU, COLOR GRIS, MODELO 2009, SE DESCONOCEN PLACAS DE CIRCULACIÓN, A NOMBRE DE CADENA COMERCIA OXXO, RESPONSABLES A LA FUGA A BORDO DE UNA HONDA CR-V, COLOR BLANCO. CULIACAN CULIACAN DE ROSALES INFONAVIT HUMAYA
El algoritmo utilizado fue el siguiente:
Si X representa la marca a buscar entonces con un like '*X*' ( donde * es comodín) se contaría a todas las coincidencias. Sin embargo en el caso donde también se establezca el vehículo del delincuente este también es contado.
Entonces si el vehículo del delincuente es Y, y . Se presentan los siguientes casos.
a) '*X*'. Solo se presenta una marca.
b) '*X*X*'. Se presenta el caso de un vehículo robado por otro de la misma marca.
c) '*X*Y*'. Se presenta el robo de un vehículo por otro de diferente marca.
d) '*Y*X*'. El vehículo del delincuente es el de la marca a contar.
La condición elaborada fue la siguiente:
Not
d) AND X<>Y
OR b)
or not a)