복붙노트

[SQL] MySQL의 합계 () 여러 열

SQL

MySQL의 합계 () 여러 열

나는 학생 스코어 카드의 테이블을 가지고있다. 여기에 테이블이다,

subject  | mark1 | mark2 | mark3 |......|markn
stud1    | 99    | 87    | 92    |      | 46
stud2    |....................................
  .
  .
studn    |....................................|

지금, 나는 총 마크의 각 학생을 요약해야합니다. 나는 스터드에 의해 (MARK1 + MARK2 + ... + markn) 그룹 합계를 사용하여 얻었다. 나는 각 열 이름을 추가하지 않고 그것을 요약하는 방법을 알고 싶다면,이 때 경우에 최대 marks26에 거대한 될 것입니다. 그래서 누군가는 그것을 해결하는 방법을 알 수 있습니다. 미리 감사드립니다.

해결법

  1. ==============================

    1.

    SELECT student, (SUM(mark1)+SUM(mark2)+SUM(mark3)....+SUM(markn)) AS Total
     FROM your_table
     GROUP BY student
    
  2. ==============================

    2.이 일을하는 또 다른 방법은 선택 쿼리를 생성하는 것입니다. 이 바이올린으로 연주합니다.

    이 일을하는 또 다른 방법은 선택 쿼리를 생성하는 것입니다. 이 바이올린으로 연주합니다.

    SELECT CONCAT('SELECT ', group_concat(`COLUMN_NAME` SEPARATOR '+'), ' FROM scorecard') 
    FROM  `INFORMATION_SCHEMA`.`COLUMNS` 
    WHERE `TABLE_SCHEMA` = (select database()) 
    AND   `TABLE_NAME`   = 'scorecard'
    AND   `COLUMN_NAME` LIKE 'mark%';
    

    위의 질의는 당신을위한 선택을 할 것입니다 다른 쿼리를 생성합니다.

    샘플 결과 :

    SELECT mark1+mark2+mark3 FROM scorecard
    

    수동으로 더 이상 모든 열을 추가 할 필요가 없습니다.

  3. ==============================

    3.SELECT 학생, SUM (MARK1 + MARK2 + mark3 + .... + markn) your_table 일부터 총

    SELECT 학생, SUM (MARK1 + MARK2 + mark3 + .... + markn) your_table 일부터 총

  4. ==============================

    4.당신의 markn 열 중 인 경우 "AllowNull는"당신은 1 개 NULL 값이 NULL 총 발생합니다 때문입니다, 반환되는 정확한 결과를 보장하기 위해 약간의 추가 작업을 수행해야합니다.

    당신의 markn 열 중 인 경우 "AllowNull는"당신은 1 개 NULL 값이 NULL 총 발생합니다 때문입니다, 반환되는 정확한 결과를 보장하기 위해 약간의 추가 작업을 수행해야합니다.

    이것은 내가 올바른 해답이 될 간주하는 것입니다.

    SUM(IFNULL(`mark1`, 0) + IFNULL(`mark2`, 0) + IFNULL(`mark3`, 0)) AS `total_marks` 
    

    1이 NULL 인 경우 IFNULL는 두번째 매개 변수를 반환합니다. COALESCE가 사용될 수있다하지만 난이 필요한 경우에만 사용하는 것을 선호합니다. MySQL의에서 IFNULL bewteen 차이 유착은 무엇을 참조하십시오?

    SUM은 오링 전체 계산 개별적 각 열은 SUM 한창보다 정돈된다.

    SELECT `student`, SUM(IFNULL(`mark1`, 0) + IFNULL(`mark2`, 0) + IFNULL(`mark3`, 0)) AS `total_marks` 
    FROM student_scorecard
    GROUP BY `student`
    
  5. ==============================

    5.짧은 대답이 당신이 가지고있는 디자인을 제공 할 수있는 더 좋은 방법은 없습니다입니다. 단일 행의 합계 값 : 다음 주제에 관련된 질문입니다?

    짧은 대답이 당신이 가지고있는 디자인을 제공 할 수있는 더 좋은 방법은 없습니다입니다. 단일 행의 합계 값 : 다음 주제에 관련된 질문입니다?

    당신은 당신의 스키마를 정상화하고 별도의 테이블에게 subject_id이 관계형 모델의 의도대로 SUM 기능을 활용할 수 있도록 해주는 마크 열을 가지고 소위 "마크"를 만든 경우.

    그런 다음 쿼리는 것

    SELECT subject, SUM(mark) total 
    FROM Subjects s 
      INNER JOIN Marks m ON m.subject_id = s.id
    GROUP BY s.id
    
  6. ==============================

    6.여러 행의 // MySQL의 합 안녕하세요 여기에 열 합계를 할 수있는 간단한 방법입니다

    여러 행의 // MySQL의 합 안녕하세요 여기에 열 합계를 할 수있는 간단한 방법입니다

    SELECT sum(IF(day_1 = 1,1,0)+IF(day_3 = 1,1,0)++IF(day_4 = 1,1,0)) from attendence WHERE class_period_id='1' and student_id='1'
    
  7. ==============================

    7.당신은 모든 주제 행 (스프레드 시트와 같은) 열 변수가 될하도록 데이터베이스 구조를 변경할 수 있습니다. 이 같은 분석을 훨씬 쉽게 만들어

    당신은 모든 주제 행 (스프레드 시트와 같은) 열 변수가 될하도록 데이터베이스 구조를 변경할 수 있습니다. 이 같은 분석을 훨씬 쉽게 만들어

  8. from https://stackoverflow.com/questions/22369336/mysql-sum-multiple-columns by cc-by-sa and MIT license