Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Valor Minimo y Valor Maximo

Estas en el tema de Valor Minimo y Valor Maximo en el foro de SQL Server en Foros del Web. Buenas Tarde, tengo un problema con la consula en SQL sobre el valor minimo mi tabla tiene los siguientes valores IMDB NSO Producto Valor 178399 ...
  #1 (permalink)  
Antiguo 12/04/2013, 10:27
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Pregunta Valor Minimo y Valor Maximo

Buenas Tarde,

tengo un problema con la consula en SQL sobre el valor minimo mi tabla tiene los siguientes valores


IMDB NSO Producto Valor
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 53.8
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.6
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.64
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.65




Mi Consulta es la siguiente


Código SQL:
Ver original
  1. SELECT   DISTINCT  IMDB_ProductID AS IMDB_Producto, NSO_ProductID AS NSO_Producto, ProductName AS Producto,VariableValue, MAX(VariableValue) AS ValorMax,
  2.                       MIN(VariableValue) AS ValorMin, AVG(CONVERT(money, VariableValue, 0)) AS ValorMed
  3. FROM         Audited_Facts_Regular
  4. WHERE     (VariableName LIKE '%offer%'OR  VariableName LIKE '%regular%')
  5. AND IMDB_ProductID=178399
  6. GROUP BY VariableValue, IMDB_ProductID, NSO_ProductID, ProductName
  7. ORDER BY  Producto ASC


El Resultado:
IMDB NSO Producto Value ValorMax ValorMin
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 53.8 53.8 53.8
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.6 56.6 56.6
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.64 56.64 56.64
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.65 56.65 56.65



existe algun modo de que yo lo pueda ver de la siguiente manera

IMDB NSO Producto Value ValorMax ValorMin
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 53.8 56.65 53.8
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.6 56.65 53.8
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.64 56.65 53.8
178399 35350791 ACE-BLANCOS-DIAMANTE-2700GRS 56.65 56.65 53.8


es decir que el valor max de producto se repita en todos y el valor min se repita en todos

si alguien me puede ayudar se lo agradecere con el alma pues tengo 2 semanas tratando de resolverlo y la verdad ya no se que otra cosa hacer en el query.
  #2 (permalink)  
Antiguo 12/04/2013, 10:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Valor Minimo y Valor Maximo

teniendo en cuenta tu resultado podrias hacer esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. imdb INT,
  4. nso VARCHAR(20),
  5. producto VARCHAR(100),
  6. VALUE DECIMAL(9,6),
  7. valormax DECIMAL(9,6),
  8. valormin DECIMAL(9,6)
  9. )
  10.  
  11.  
  12. INSERT INTO #temp VALUES (178399,'35350791','ACE-BLANCOS-DIAMANTE-2700GRS',53.8,53.8,53.8)
  13. INSERT INTO #temp VALUES (178399,'35350791','ACE-BLANCOS-DIAMANTE-2700GRS',56.6,56.6,56.6)
  14. INSERT INTO #temp VALUES (178399,'35350791','ACE-BLANCOS-DIAMANTE-2700GRS',56.64,56.64,56.64)
  15. INSERT INTO #temp VALUES (178399,'35350791','ACE-BLANCOS-DIAMANTE-2700GRS',56.65,56.65,56.65)
  16.  
  17. SELECT t1.imdb,nso,producto,VALUE,t2.minimo,t3.maximo FROM #temp AS t1
  18. LEFT JOIN (SELECT MIN(VALUE) minimo,imdb FROM #temp GROUP BY imdb) AS t2 ON (t1.imdb=t2.imdb)
  19. LEFT JOIN (SELECT MAX(VALUE) maximo,imdb FROM #temp GROUP BY imdb) AS t3 ON (t1.imdb=t3.imdb)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 12/04/2013, 11:55
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Valor Minimo y Valor Maximo

Primero obtendría el Máximo y el mínimo y realizaría un JOIN

Código SQL:
Ver original
  1. SELECT  DISTINCT    T1.IMDB_ProductID AS IMDB_Producto, T1.NSO_ProductID AS NSO_Producto, T1.ProductName AS Producto, T1.VariableValue,
  2.                     T2.ValorMax, T2.ValorMin, T1.ValorMed
  3. FROM         Audited_Facts_Regular T1
  4. INNER JOIN
  5.         (SELECT IMDB_ProductID, MAX(VariableValue) AS ValorMax, MIN(VariableValue) AS ValorMin,  AVG(CONVERT(money, VariableValue, 0)) AS ValorMed FROM Audited_Facts_Regular
  6.                 WHERE     (VariableName LIKE '%offer%'OR  VariableName LIKE '%regular%') AND IMDB_ProductID=178399
  7.                 GROUP BY IMDB_ProductID) T2
  8.         ON T1.IMDB_ProductID = T2.IMDB_ProductID
  9. WHERE     (T1.VariableName LIKE '%offer%'OR  T1.VariableName LIKE '%regular%')
  10. AND T1.IMDB_ProductID=178399
  11. GROUP BY T1.VariableValue, T1.IMDB_ProductID, T1.NSO_ProductID, T1.ProductName
  12. ORDER BY  T1.Producto ASC

Espero te sirva.
  #4 (permalink)  
Antiguo 12/04/2013, 12:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Valor Minimo y Valor Maximo

y en que se diferencia a lo que puse? ademas de que usaste todo el query de la compañera :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 12/04/2013, 12:08
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Valor Minimo y Valor Maximo

Libras, realmente no vi tu respuesta, ya había dejado la ventana mucho tiempo y la única diferencia es un JOIN menos ;)

Etiquetas: maximo, select, sql, tabla, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:21.