def retorna_historico_de_delito(self, codigoDelito): tipo = TipoOcorrencia.objects.get(codigo=codigoDelito) query = "select extract (month from data) as mes, "\ "extract(year from data) as ano, count(*) "\ " from ocorrencias_ocorrencia "\ " where tipo_id = " + str(tipo.id) +\ " and data::date > (now()::date - 1080)"\ " group by extract (month from data), extract(year from data) "\ " order by ano,mes" cursor = connection.cursor() cursor.execute(query) retorno = dictfetchall(cursor) connection.close() historico = [] for ocor in retorno: data = str(ocor['ano']) + '-' + '{:*>2}'.format(str(ocor['mes']))\ + '-01' + 'T' + '00:00:00-07:00' data = "%02d-%02d-01T00:00:00-07:00" % (ocor['ano'], ocor['mes']) historico.append(dict(count=int(ocor['count']), date=data)) return historico
def get_estatistica(self, tipo_id=None): query = "select count(ocor.id) as total ,tipo.codigo as codigo, \ tipo.nome_para_listagem as nome, \ extract(hour from data) as hora , \ extract (dow from data) as diadasemana \ from ocorrencias_ocorrencia as ocor \ join ocorrencias_tipoocorrencia as tipo \ on (tipo.id = ocor.tipo_id) \ where tipo.pode_listar = true " if tipo_id != None: query = query + " and tipo_id = " + str(tipo_id) query += " group by ocor.tipo_id,tipo.codigo, " \ "tipo.nome_para_listagem,extract(hour from data) , " \ "extract (dow from data) \ order by ocor.tipo_id" min_max = Ocorrencia.objects.aggregate(Max('data'), Min('data')) periodo = 'De ' + min_max['data__min'].strftime("%d/%m/%Y") + \ ' a ' + min_max['data__max'].strftime("%d/%m/%Y") cursor = connection.cursor() cursor.execute(query) retorno = dictfetchall(cursor) return periodo, retorno