entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Hola necesito realizar una consulta la cual me calcule el porcentaje

SELECT concat(biencatalogo.nombien ,marca.nommarca,modelo.nommodelo,
bien.serie) as caracteristicas,bien.fijo_movil,bien.propietarioemp,
bien.codbieninv,YEAR(CURDATE())- YEAR(fechaadq) AS
 edad,bien.costo_inicial,bien.costo_inicial*10/100 as costo, -- AQUI EL PROBLEMA QUE NO IMPORTA LOS AÑOS QUE TENGA A EL COSTO INICIAL LE SACA EL 10% Y DEBE ACTUALIZAR POR AÑOS QUE TENGA EL EQUIPO
centro_gestor.centro,
 centro_gestor.arefun from bien 
inner join centro_gestor on bien.centro = centro_gestor.centro
inner join biencatalogo on biencatalogo.codbiencat = bien.codbiencat 
inner join marca on marca.codmarca = bien.codmarca 
inner join modelo on modelo.codmodelo = bien.codmodelo 
where propietarioemp = 'capufe' and bien.debaja='NO'

0voto

TMPR comentado

Alguien que me ayude por favor!!

0voto

matti comentado

No probastes usando la funciona AVG en vez de hacer el *10/100?

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @TMPR,

si el resto de la query está bien (cosa que no podemos comprobar sin la estructura de las tablas y un lote de pruebas), lo que tenés que hacer es cambiar el 10 que ponés fijo por la cantidad de años que tenga el equipo.

Sería algo como:

SELECT concat(biencatalogo.nombien ,marca.nommarca,modelo.nommodelo,
bien.serie) as caracteristicas,bien.fijo_movil,bien.propietarioemp,
bien.codbieninv,YEAR(CURDATE())- YEAR(fechaadq) AS
 edad,bien.costo_inicial,bien.costo_inicial*(100 - YEAR(CURDATE())- YEAR(fechaadq))/100 as costo, centro_gestor.centro,
 centro_gestor.arefun from bien 
inner join centro_gestor on bien.centro = centro_gestor.centro
inner join biencatalogo on biencatalogo.codbiencat = bien.codbiencat 
inner join marca on marca.codmarca = bien.codmarca 
inner join modelo on modelo.codmodelo = bien.codmodelo 
where propietarioemp = 'capufe' and bien.debaja='NO'

Es decir, en vez de poner fijo el 10, usás 100 - edad, así algo de 0 años tiene el 100% del valor, algo de 10 años el 90% del valor y así sucesivamente.

Esto significa que TODO tarda 100 años en amortizarse por completo.

Saludos cordiales

0voto

TMPR comentado

Anteriormente había intentado eso pero me da cifras (-3621.6) asi ejemplo su costo inicial es de $90 y tiene 0 años deberia de hacerle el 10% cuando tenga 2 años el 9% y asi sucesivamente. pero no encuentro como poder hacerlo :c

0voto

Leonardo-Tadei comentado

Hola @TMPR,

mi consulta no puedo dar valores negativos... fijate el 100 restando al valor. Lo que decía es que eso es una tasa de amortización en 100 años, lo que no parece correcto.

Lo que no le encuentro es sentido a que con 0 años tenga el 10% y que con 2 años tenga el 9%... se supone que a medida que pasa el tiempo el bien vale menos, no más, pero tampoco parece correcto que recién comprado, antes de que pase 1 año, ya tenga el 90% del valor.

Qué pasa con las cosas que tienen más de 10 años?

No me doy cuenta qué cálculo tenés que hacer... luego de eso, se podrá implementar en una query.

0voto

TMPR comentado

SELECT concat(biencatalogo.nombien ,marca.nommarca,modelo.nommodelo,
bien.serie) as caracteristicas,bien.fijo_movil,bien.propietarioemp,
bien.codbieninv,YEAR(CURDATE())- YEAR(fechaadq) AS
 fechaadq,bien.costo_inicial,
bien.costo_inicial*(100 - YEAR(CURDATE())- YEAR(fechaadq))/100  as COSTO ,
centro_gestor.centro,
 centro_gestor.arefun from bien 
inner join centro_gestor on bien.centro = centro_gestor.centro
inner join biencatalogo on biencatalogo.codbiencat = bien.codbiencat 
inner join marca on marca.codmarca = bien.codmarca 
inner join modelo on modelo.codmodelo = bien.codmodelo 
where propietarioemp = 'capufe' and bien.debaja='NO'

Así tengo la consulta
y me arroja lo siguiente

COMPUTADORA DE ESCRITORIO
TOSHIBAPAVILIONtuyt777  
MOVIL   
CAPUFE  
ft55    
0   
90  EDAD -- NO SE GUARDA 
-3540.6  COSTO 
BSLD    
321

0voto

TMPR comentado

Hola @Leonardo-Tadei
quitandole los paréntesis despues del (*) quita la cifra negativa pero aun me da numeros que no tiene nada que ver.
ya lo cheque muchas veces pero no encuentro el error

SELECT concat(biencatalogo.nombien ,marca.nommarca,modelo.nommodelo,
bien.serie) as caracteristicas,bien.fijo_movil,bien.propietarioemp,
bien.codbieninv,YEAR(CURDATE())- YEAR(fechaadq) AS
 edad,bien.costo_inicial,bien.costo_inicial*100 - YEAR(CURDATE())- YEAR(fechaadq)/100 as costo, centro_gestor.centro,
 centro_gestor.arefun from bien 
inner join centro_gestor on bien.centro = centro_gestor.centro
inner join biencatalogo on biencatalogo.codbiencat = bien.codbiencat 
inner join marca on marca.codmarca = bien.codmarca 
inner join modelo on modelo.codmodelo = bien.codmodelo 
where propietarioemp = 'capufe' and bien.debaja='NO'

Así tengo la consulta
y me arroja lo siguiente

COMPUTADORA DE ESCRITORIO
TOSHIBAPAVILIONtuyt777
MOVIL
CAPUFE
ft55
0
90 EDAD -- NO SE GUARDA
6962.83 COSTO
BSLD
321

0voto

Leonardo-Tadei comentado

Lo que no le encuentro es sentido a que con 0 años tenga el 10% y que con 2 años tenga el 9%... se supone que a medida que pasa el tiempo el bien vale menos, no más, pero tampoco parece correcto que recién comprado, antes de que pase 1 año, ya tenga el 90% del valor.

Qué pasa con las cosas que tienen más de 10 años?

No me doy cuenta qué cálculo tenés que hacer... luego de eso, se podrá implementar en una query.

0voto

TMPR comentado

Si veo mi error ahora cuando tenga 0 años me deje la cantidad como tal y cuando tenga 1 año ya me haga el porcentaje debe ser del 10% pero cuando tenga 2 años sera menos y asi sucesivamente

0voto

Leonardo-Tadei comentado

y cuando tenga 11 o 12 años? Podrías poner una tablita de texto con un ejemplo de costo y los valores que tiene que tener desde 0 a 12 años de antigüedad?

0voto

TMPR comentado

Hola @Leonardo-Tadei
mira replanteando haz de cuenta que cuando tiene 0 años no se debe de aplicar.
cuando tiene 1 año el 10%
cuando tenga 2 años el 10% de lo que salio del 1 año
cuando tenga 3 años el 10% de lo que salio del 2 año
cabe mencionar que no se guarda el costo del ultimo, ya que siempre sera el costo inicial .
yo pienso que debe ir en un if pero no se como meterlo en la consulta.}
Espero y ahora si me halla dado a entender.

0voto

Leonardo-Tadei comentado

Yo no entiendo todavía qué calculo necesitás hacer :-( Podrías poner una tabla de valores?
Algo como:

costo   año resultado
100 0   xxx
100 1   xxx
100 2   xxx
100 3   xxx
...
100 12  xxx

0voto

TMPR comentado

HOLA
@Leonardo-Tadei

COSTO --- AÑO --- RESULTADO
100 --- 0 --- 100
100 --- 1 --- 90
90 --- 2 --- 81
81 --- 3 --- 72.90

suponiendo que tiene tres años el equipo y su costo inicial es de $100, debe retomar el resultado anterior para quitarle el 10 % segun los años que tenga el equipo

0voto

Leonardo-Tadei comentado

Por favor, extendé tu tabla hasta 12 años (te lo pido más arriba, y más arriba...)

0voto

TMPR comentado

@Leonardo-Tadei
Listo

COSTO --- AÑO --- RESULTADO
100 --- 0 --- 100
100 --- 1 --- 90
90 --- 2 --- 81
81 --- 3 --- 72.90
72.90--- 4 --- 65.61
65.61 --- 5 --- 59.05
59.05---- 6 --- 53.14
53.14 -- 7 -- 47.83
47.83 -- 8 -- 43.05
43.05 -- 9 ---- 38.74
38.74 ---- 10 --- 34.87
34.87----11----31.38
31.38-----12----28.24
28.24----13-----25.42

0voto

TMPR comentado

Hola
@Leonardo-Tadei ..
Encontraste solucion a mi problema??
Yo lo quise solucionar con un ciclo asi ..

for($i=0; $i=YEAR(CURDATE())- YEAR(fechaadq);$i++){
$porcentaje = $costo_inicial *.10
$precioactualizado=$precioactualizado-$porcentaje

}

Lo hice a papel y si me da,
pero no puedo ponerlo en la consulta como tal , no se si podrias ayudarme en esa parte.
Gracias

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta