elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Uso de la sentencia MAX() en UDF
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Uso de la sentencia MAX() en UDF  (Leído 3,252 veces)
CarlosGPT

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Uso de la sentencia MAX() en UDF
« en: 16 Mayo 2022, 18:40 pm »

Base de datos NorthWind

Buenas tardes estimados, el ejercicio que deseo realizar me pide lo
siguiente:

Utilizando la función MAX() crear una función que muestre el
registro del empleado que haya sacado más dinero por sus órdenes de venta.

Para hacer este ejercicio voy a utilizar otra función que he
realizado previamente llamada "costoTotal", esta función me da como
salida el costo total de una orden de venta con solo recibir el ID de la orden:

ALTER FUNCTION [dbo].[costoTotal](@ordenID int)

RETURNS table

RETURN (SELECT [Order
Details].OrderID,

ROUND(SUM((UnitPrice
-(UnitPrice*Discount)) * Quantity), 2)

AS Total_Orden FROM [Order Details]

WHERE
OrderID = @ordenID

GROUP
BY OrderID)

 

si la ejecuto:

select * from dbo.costoTotal(10250)

 

me da la siguiente salida:

OrderID           Total_Orden

10250              1552.60

 

Ahora, utilizando esta función he creado la función que se me pide:

 

ALTER FUNCTION dbo.Maxima_Ventas()

RETURNS @table_resultado table (IdEmpleado int, Primer_Nombre
nvarchar(10), Monto_total money)

AS

BEGIN

DECLARE @max_monto money;

 SELECT @max_monto=MAX(res.Monto_total)

FROM(

 SELECT SUM(c.Total_Orden) Monto_total

FROM Orders o

CROSS APPLY dbo.costoTotal(o.OrderID) c

GROUP BY o.EmployeeID

) res

 INSERT INTO @table_resultado

SELECT o.EmployeeID, e.FirstName, @max_monto

FROM Orders o

JOIN Employees e ON o.EmployeeID = e.EmployeeID

GROUP BY o.EmployeeID, e.FirstName

 RETURN

END

 

Pero al ejecutarla:

SELECT * FROM dbo.Maxima_Ventas

 

Obtengo el resultado correcto en la columna "Monto_total"

Pero me salen los registros de todos los empleados y sus ID:

 


idEmpleado               Primer_Nombre         Monto_Total
                         

1                            Andrew                 232890.84

2                           Janeth                  232890.84

3                           Margaret              232890.84

4                           Steven                 232890.84

5                           Michael                232890.84

6                           etc...                     etc...

7

8

9

 

Pero la respuesta que yo busco es la siguiente, correspondiente al
empleado Margareth:

idEmpleado            Primer_Nombre    Monto_Total


3                           Margaret              232890.84

 

De antemano les agradezco su ayuda.

 



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con sentencia try en un for
.NET (C#, VB.NET, ASP)
DarkItachi 5 3,185 Último mensaje 9 Enero 2009, 18:27 pm
por Mace Windu
Sentencia SQL
Bases de Datos
TheGhost(Z) 2 2,984 Último mensaje 6 Marzo 2011, 17:35 pm
por raul338
Sentencia Goto en Php , Salto de sentencia en Php
PHP
Graphixx 3 3,623 Último mensaje 24 Mayo 2012, 17:46 pm
por Graphixx
Sentencia SQL « 1 2 »
Bases de Datos
rubcr 10 4,696 Último mensaje 29 Abril 2020, 03:21 am
por rubcr
Sentencia sql
Bases de Datos
thebus4k 1 2,127 Último mensaje 8 Mayo 2020, 18:58 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines