[SQL] MySQL의 합계 () 여러 열
SQLMySQL의 합계 () 여러 열
나는 학생 스코어 카드의 테이블을 가지고있다. 여기에 테이블이다,
subject | mark1 | mark2 | mark3 |......|markn
stud1 | 99 | 87 | 92 | | 46
stud2 |....................................
.
.
studn |....................................|
지금, 나는 총 마크의 각 학생을 요약해야합니다. 나는 스터드에 의해 (MARK1 + MARK2 + ... + markn) 그룹 합계를 사용하여 얻었다. 나는 각 열 이름을 추가하지 않고 그것을 요약하는 방법을 알고 싶다면,이 때 경우에 최대 marks26에 거대한 될 것입니다. 그래서 누군가는 그것을 해결하는 방법을 알 수 있습니다. 미리 감사드립니다.
해결법
-
==============================
1.
SELECT student, (SUM(mark1)+SUM(mark2)+SUM(mark3)....+SUM(markn)) AS Total FROM your_table GROUP BY student
-
==============================
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.SELECT 학생, SUM (MARK1 + MARK2 + mark3 + .... + markn) your_table 일부터 총
SELECT 학생, SUM (MARK1 + MARK2 + mark3 + .... + markn) your_table 일부터 총
-
==============================
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.짧은 대답이 당신이 가지고있는 디자인을 제공 할 수있는 더 좋은 방법은 없습니다입니다. 단일 행의 합계 값 : 다음 주제에 관련된 질문입니다?
짧은 대답이 당신이 가지고있는 디자인을 제공 할 수있는 더 좋은 방법은 없습니다입니다. 단일 행의 합계 값 : 다음 주제에 관련된 질문입니다?
당신은 당신의 스키마를 정상화하고 별도의 테이블에게 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.여러 행의 // 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.당신은 모든 주제 행 (스프레드 시트와 같은) 열 변수가 될하도록 데이터베이스 구조를 변경할 수 있습니다. 이 같은 분석을 훨씬 쉽게 만들어
당신은 모든 주제 행 (스프레드 시트와 같은) 열 변수가 될하도록 데이터베이스 구조를 변경할 수 있습니다. 이 같은 분석을 훨씬 쉽게 만들어
from https://stackoverflow.com/questions/22369336/mysql-sum-multiple-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 는 SQL IN 연산자에 LINQ 상응하는 무엇입니까 (0) | 2020.06.28 |
---|---|
[SQL] SQL Server 2005의 VARBINARY 필드의 크기 (0) | 2020.06.28 |
[SQL] DISTINCT SELECT가 지정된 경우 ORDER BY 항목이 SELECT 목록에 나타나야합니다 (0) | 2020.06.28 |
[SQL] 어떻게 PSQL 출력에서 숨기기 결과 세트 장식에 (0) | 2020.06.28 |
[SQL] 분에서 2 날짜 사이의 시간 차이를 계산 (0) | 2020.06.28 |