누락 된 총 금액 (손실 * 금액)이 가장 적은 행의 합계를 출력하려고 시도하는 경우 입력 (수량)이 사용 예 3의 입력은 최하위 3 행의 합계를 반환합니다. MariaDB 사용 현재 코드 : I가 정확하게 판독되면 입력이 주어입력에 의해 SQL 함수에 의해 생성 된 행의 수를 제한
DELIMITER ++
CREATE FUNCTION TotalLoss (quantity INT) returns INT
WITH cte AS (
SELECT
M.lost*C.Number AS total,
ROW_NUMBER() OVER (ORDER BY M.Lost*C.Number) AS row
FROM Money M
JOIN Company C
ON M.Id = C.MId
)
SELECT SUM(total) FROM cte WHERE row = quantity;
DELIMITER ;
TABLE Money (Id, lost) has values (1, 10), (2,40), (3,90), (4,100)
Table Company (MId, Number) has values (3, 4), (1,2), (5, 1), (4,1)
는, 출력이 낮은 두 가지 (10 * 2 + 100 * 2)
감사! mysql을 사용하여 같은 것을 달성하는 방법은 무엇입니까? –
@ J.Doe MySQL 함수에서 이것이 가능한지 확신 할 수 없습니다. 저장 프로 시저 또는 일반 쿼리를 받아 들일 수 있습니까? –
이 함수는 –