2017-03-14 1 views
1

내 테이블을 casegroup by 문으로 업데이트하고 싶습니다.그룹 기준 + 사례 코드

나는 salary 열을 포함하는 플레이어 테이블을 가지고 있으며 각 행에 대해 group_name이 있습니다.

평균 급여보다 큰 급여를 갱신하고 싶습니다.

우선, 이름, 선수 급여 및 팀 평균 급여를 나열하려고했습니다. 나는 이것에 문제가있어서 나는 기꺼이 도움을 얻을 것이다.

select first_name, 
     last_name, 
     group_name, 
     salary, 
     (
      select round(avg(salary),2) as salary 
      from players 
      group by group_name 
     ) 
from players 

도움 주셔서 감사합니다.

MERGE INTO MyTable MyTable 
USING 
(
    SELECT a.player, 
      a.[group], 
      a.sal, 
      b.sal2 
    FROM MyTable a 
     INNER JOIN 
    (
     SELECT [group], 
       AVG(Sal) sal2 
     FROM MyTable 
     GROUP BY [group] 
    ) b ON a.[group] = b.[group] 
      AND a.sal > b.sal2 
) YY 
ON YY.player = MyTable.player 
    AND YY.[group] = MyTable.[group] 
    WHEN MATCHED 
    THEN UPDATE SET 
        MyTable.sal = yy.sal2; 
+0

이 시나리오의 내부 조인을 사용하십시오. –

+0

샘플 테이블 데이터와 예상 결과 및 서식있는 텍스트를 추가하십시오. – jarlh

+0

행의 값을 어떻게 업데이트 하시겠습니까? –

답변

0

사용 그룹은에서 문을 가입 Ben Zur

SELECT Ord.first_name, Ord.last_name,Ord.group_name, 
(SELECT round(avg(salary),2) 
FROM Players AS OrdDet 
WHERE Ord.group_name = OrdDet.group_name) AS MaxUnitPrice 
FROM Players AS Ord 
0

이 SQL은 각각의 플레이어를 발견하고 그룹의 평균 연봉과 자신의 급여를 업데이트합니다 : BY 절

0

이 @Amit을 시도 -이 :

SELECT first_name,last_name,group_name,salary 
FROM players 
JOIN 
(
    SELECT ROUND(AVG(salary),2) as salary , group_name 
    FROM PLAYERS 
    GROUP BY group_name 
) A ON A.group_name = players.group_name 
1

아직 사용중인 DBMS를 알 수 없습니다. 그러므로 나는 단지 짐작할 수 있습니다.

update p set salary=avgsal+100 -- enter your formula here 
from players p inner join 
    ( select group_name gname,round(avg(salary),2) as avgsal 
     from players 
     group by group_name 
    ) grped on gname=group_name 
where salary>avgsal; 

및 MySQL 용 : 내가 그룹의 평균 급여 100와 관련 플레이어의 현재 급여를 교체 위의 명령에서

update players inner join 
    ( select group_name gname,round(avg(salary),2) as avgsal 
     from players 
     group by group_name 
    ) grped on gname=group_name 
set salary=avgsal+100 -- enter your formula here! 
where salary>avgsal; 

다음 업데이트 SQL 서버에 대한 명령입니다. 이것은 물론 자신의 수식을 입력 해야하는 장소입니다!