2016-11-18 4 views
0

의 평균입니다 계산 :MySQL은 내 질문에 설명하는 기능을 함수의 매개 변수 여기

CREATE DEFINER=`root`@`localhost` FUNCTION `Demo`(`data` Integer) RETURNS int(11) 
BEGIN 
    declare result integer; 
    set result = avg(`data`); 
    return result; 
RETURN 1; 
END 

및 매개 변수 data이처럼 보이는, 다른 선택 결과에서 전체 열입니다 :

10 

12 

15 

... 

data의 평균을 계산할 때이 함수를 사용하고 싶지만 단지 다음을 보여줍니다 :

오류 코드 : 그룹 기능의 1111 잘못된 사용

즉, 평균 기능을 사용하는 잘못된 방법이었다 보인다, 카운트 같은 다른 기능은()도 같은 문제를 가지고 있지만 내가 할 수있는 내 목적을 달성 할 수있는 방법을 찾지 못한다면 그렇게 할 수있는 방법이 있을까요?

+0

이 함수는 다른 테이블의 각 행에 대해 실행됩니까? – Mihai

답변

0

단일 값의 평균을 계산하는 것은 의미가 없습니다. 단일 값의 평균은 min과 같고 max와 동일하며 모두 단일 값 자체와 동일합니다.

이 기능의 의도를 알기는 어렵습니다. 쿼리에서 사용하려면, 당신은 당신이 쿼리의 각 행에서 사용할로 그 결과의 평균을 계산할 수 있습니다 : 당신이 어떤 테이블을 쿼리 기능을 사용할 수 있습니다

SELECT AVG(Demo(data)) FROM MyTable; 

또는 평균을 반환 많은 행의. 그러나 함수 인수를 전달할 필요는 없습니다.

CREATE FUNCTION Demo() RETURNS INT 
BEGIN 
    DECLARE result INT; 
    SET result = (SELECT AVG(`data`) FROM MyTable); 
    RETURN result; 
END 
0

배열을 전달해야합니다.

CREATE DEFINER=`root`@`localhost` FUNCTION `Demo`(a_array IN my_integer_array) RETURNS int(11) 
BEGIN 

FOR i IN a_array.first..a_array.last LOOP  
      set result = a_array(i); 
return result; 
     END LOOP; 
RETURN 1; 
END