Obtener la suma de uno o varios campos de un grupo de registros.


([N3] blanyi) #1

Nuevamente por aquí con otra inquietud.

Con una sentencia SQL podría obtener la suma de un campo numérico de los registros que cumplan cierta condición de la siguiente manera.

SELECT SUM(alor_pagado) Total_Pagado FROM tabla_a WHERE condicion

Cuál es el equivalente en Velneo, que no sea un recorrer lista e ir sumando uno a uno el valor de cada registro?

Gracias.

YIMY MORA ACONCHA


([N4] cyf) #2

La sentencia SELECT que expones recorre toda la tabla o vista, examina la condición y suma uno a uno los registros que la cumplen. Evidentemente desconozco por qué necesitas hacer lo que indica la sentencia SELECT pero sin hacerlo. El equivalente en velneo podría ser una BUSQUEDA, en un proceso ejecutado en el servidor, que al estar apoyada en indices no tiene que recorrer (normalmente) toda la tabla. La solución depende de si la condición es variable y de muchos otros factores. Si lo que necesitas es una respuesta inmediata a lo mejor te conviene guardar acumulados. Si lo que necesitas es una respuesta muy muy rápida, te vale casi cualquier procemiento siempre que lo ejecutes en el servidor.
Un saludo.


([N1] Pepeto) #3

Dependiendo del analisis de la aplicación, tienes varias formas de resolver el problema:

1. Una busqueda condicionada por los indices, y con el resultado, recorrer la lista sumando los importes o unidades.
2. Crear actualizaciones a una tabla de acumulados para obtener de ella los resultados por medio de punteros.
3. La opcion de recorrer la lista filtrando, esa como que no te la aconsejo, pero si no te queda mas remedio.

un saludo
José Luis
http://www.ascsl.com


([N3] blanyi) #4

Hola cyf.ecocyf.

Lo que pasa es que tengo entendido que si hay alguna instruccion, función o sentencia que ya este compilada en la herramienta que utilizamos es mucho más rápido que si lo programamos nosotros. De todos modos gracias por tu aporte.

Pepeto gracias por la explicación.

YIMY


([N1] carlos2325) #5

Es una pena que este tipo de funcionalidad no exista en velneo, a nivel de aplicación para el cliente aunque se tarde mas los procedimientos puede servir…

Pero a nivel de implementación y de hacer comprobaciones si los procesos estan correctos es muy útil, y se hecha de menos en VDtataCliente seria super importante que existiera ese tipo de posibilidades para poder realizar comprobaciones.


([N1] Roberto Blasco) #6

Hola JorgeCA.

La sentencia SELECT que expones recorre toda la tabla o vista, examina la condición y suma uno a uno los registros que la cumplen
Eso que estás diciendo es una barbaridad sin pie ni cabeza. Una cosa es la sentencia SQL que blanyi ha expuesto y otra muy diferente es que ésta esté apoyada en indices o no. Estás dando por hecho que la bbdd no tiene índices de ningún tipo. Seamos coherentes.

Un saludo. Roberto Blasco


([N4] cyf) #7

Hola Roberto, siento decir barbaridades y asumo mi error. Mi respuesta podría haber sido un poco mas extensa especificando “toda la tabla o los registros relacionados en un indice”. Mi intención no era determinar exactamente la ejecución de la SELECT, sino orientar modestamente y sin ninguna pretensión, sobre alguna de las posibilidades equivalentes en Velneo, que creo que era la pregunta de blanyi.

Perdona por mi incoherencia.

Un saludo. Jorge Calviño


([N1] Roberto Blasco) #8

Hola jorgeCA

No hay porqué disculparse y menos conmigo, que soy el que más fallos comete con diferencia. :slight_smile:

Un saludo Roberto Blasco.


([N1] mvg) #9

Como están?

yo soy completamente nuevo, no pase por N1 y voy directamente a N2, no he creado nada aún, pero al ver este tema, realmente me asusta que la DB de Velneo o permita cosas tan simples, puede que mi ignorancia en Velneo me lo haga ver así, sería bueno tener una respuesta mas concreta a este interrogante

saludos

Marcelo


([N1] samuelblanquez.net) #10

Hola marcerlo,… me meto en el hilo para intentar orientarte un poquito en que, y en que no es bueno, (siempre a mi criterio) Velneo.

Primero te aclaro que llevo mas de 10 años desarrollando directamente en transact SQL, implementando la lógica de negocio sobre la misma base de datos, ( te aclaro para que te situes en cuanto a mi perfil, y 1,5 años en V7 aprox).

Es cierto que cuando vienes de SQL como es mi caso ( y el de la grán mayoria que no viene de V6), te sientes perdido sin tus sentencias… y la primera sensación es de duda. (Por tu situación tambien he pasado yo), que te puedo aportar… pues te voy a dar mi opinion… porque la has pedido (Creo).

Velneo es SENSACIONAL, para todo lo que es PROGRAMADO… cual es nuestro problema que las consultas a la base de datos no siempre son “programadas”, cuando se trate de una de estas consultas “programadas”, no vas a echar de menos nada,… ya que con procesos… busquedas y demás. … darás unas soluciones muy muy eficientes (piensa que en SQL puedes hacer un ORDER BY … sin que para ello tu hayas definido un INDICE, lo cual no significa que la Base de Datos no haga un indice para resolverlo, solo que lo crea en tiempo de ejecución … esto es completamente valido para bases de datos “pequeñas” pero cuando trabajas con mucha información cuando menos no es optimo.

Donde no es agil Velneo? cuando tu director comercial entra por la puerta y te dice vamos a ver,… caunto hemos vendido el año pasado a los clientes del codigo postal 50820 , y espera una respuesta completamente instantanea… de esos cuantos compraron más de 100.000 euros,… ok, y de los que comprarón más de 100.000 dame los porcentajes por familias de producto…

… y de nuevo… se vuelve a quedar esperando!!!

Puedes sacar toda esa información con Velneo SI. Tan rapido como lo harias en SQL…NO.

Y ahora va una pequeña sugerencia… (no será que cuando tenemos un martillo en la mano todo nos parece un clavo??? ) Y si usamos cada herramienta para lo que está hecha?

Es cierto que con Velneo se desarrolla rapido y bien, Si, es cierto que SQL es un lenguaje de consulta de datos SI… te sugiero que uses lo mejor de dos mundos…

Casi la mayoria de las aplicaciones tiene una tabla base sobre la que montarias el DATAWAREHAUSE… mi sugerencia es que cuando tengas un sistema muy grande con necesidad de análisis “no programado” … repliques la tabla base, y consultes sobre ella… piensalo … no le quitarás recursos al servidor “transaccional” … y hacemos del defecto virtud.

PD: Jorge el que se ofenda por tu explicación… que no te lea, los que venimos aqui a aprender te hemos entendido perfectamente.

Un saludo.

 

 

 

 

 

 

 

 

 


([N4] dmartin) #11

Carlos, Marcelo, os comento por si no lo habéis visto, que podéis solicitar el cambio de vuestro nombre de usuario desde aquí: http://velneo.es/foros/topic/hilo-oficial-cambiar-nombre-de-usuario/

Un saludo!


([N1] Roberto Blasco) #12

Hola Samuel.

Sólo decirte que para nada me he sentido ofendido. El problema que veo es que la gente suelta unas ligerezasi muchas veces sin fundamento, que cuando van a la par de Velneo nadie dice nada y cuando van en contra todo el mundo salta.

Hay que ser imparcial. Yo llevo desde el 2003 programando con Velneo y unos cuantos años antes con bbdd relacionales.

Mi sensación … Con Velneo tengo una programación fuertemente estructurada que no me permite cometer fallos que con otros lenguajes por ser más flexibles podría cometer. Pero no tengo la posibilidad de acceso a mis datos tan flexible como lo pueda tener con SQL.

Mi pregunta, cuándo se dignará Velneo a crear un API SQL que permita el acceso a sus datos?

Estamos en una época donde cada vez suena más BigData. Estará Velneo a la altura cuando se convierta en un requisito en vez de una opción?. Espero que sí. Y también espero que un día pueda acceder a mis datos de Velneo y poder utilizarlos desde cualquiera otra apviceversa y viceversa.

Un saludo Roberto.


([N1] mariobarreiro) #13

La solución que aporta Velneo me parece buenísima. Se crea un caja que herede de la caja principal de la aplicación. Ahí podemos hacer todas las consultas puntuales que necesitemos.