반응형
codeigniter 4 mysql 쿼리 고유 또는 그룹별
코드 시그니터-4.1.9를 사용하고 있어요스코어 테이블이 있고 여러 라운드가 있습니다.각 사용자가 다른 라운드로 점수를 획득합니다.라운드가 다른 한 행의 각 사용자 점수를 취득하고 싶지만 예상 결과를 얻을 수 없습니다.어떻게 고칠까요?
둘 다 해봤어요.
$scmodel->query("SELECT DISTINCT * FROM score GROUP BY score");
또는
$scmodel->query("SELECT DISTINCT * FROM score GROUP BY teamid");
예상되는 결과는 다음과 같습니다.
teamid round1 round2 round3
1 20 30 40
2 50 30 90
3 45 38 70
단, 취득:
teamid round1 round2 round3
1 20
2 50
3 45
1 30
2 30
3 38
1 40
2 90
3 70
스코어 테이블은
라운드를 별도의 열로 만들려면 라운드를 작성해야 합니다.pivot query
예를 들어 다음과 같습니다.
$scmodel->query("
SELECT teamid,
SUM(IF(roundid = 1, score, 0)) as round1,
SUM(IF(roundid = 2, score, 0)) as round2,
SUM(IF(roundid = 3, score, 0)) as round3
FROM score
GROUP BY teamid
");
샘플 데이터:
create table score (id integer(3),
teamid varchar(100),
jid integer(3),
roundid integer(3),
challengeid integer(3),
score integer(5),
mailstatus integer(3)
);
insert into score values
(1, 'CTO202241400-GOLD', 2, 2, 4, 89, 1),
(2, 'CTO20220171-DIAM', 2, 1, 3, 75, 1),
(3, 'CTO-2022-1133224-ZOOM', 2, 1, 4, 87, 1),
(4, 'CTO20221888-EAGL', 2, 2, 4, 76, 1),
(5, 'CTO2022889-ABGR', 2, 3, 5, 59, 1),
(6, 'CTO202241400-GOLD', 2, 3, 5, 89, 1),
(7, 'CTO20221888-EAGL', 2, 3, 5, 97, 1),
(8, 'CTO-2022-1133224-ZOOM', 2, 3, 5, 67, 1),
(9, 'CTO20220171-DIAM', 2, 3, 5, 98, 1);
출력:
| teamid | round1 | round2 | round3 |
|-----------------------|--------|--------|--------|
| CTO-2022-1133224-ZOOM | 87 | 0 | 67 |
| CTO20220171-DIAM | 75 | 0 | 98 |
| CTO20221888-EAGL | 0 | 76 | 97 |
| CTO202241400-GOLD | 0 | 89 | 89 |
| CTO2022889-ABGR | 0 | 0 | 59 |
SQL Fidle: http://www.sqlfiddle.com/ #!9/7ed3fa/3/0
언급URL : https://stackoverflow.com/questions/71623015/codeigniter-4-mysql-query-distinct-or-groupby
반응형
'source' 카테고리의 다른 글
Java를 사용하여 활성 쓰기 대상 파일에서 읽으려면 어떻게 해야 합니까? (0) | 2022.09.15 |
---|---|
C/C++의 작은따옴표, 큰따옴표 및 크기('a') (0) | 2022.09.15 |
처음 사용한 후 재할당 시 로컬 변수의 UnboundLocalError (0) | 2022.09.15 |
Python Panda 오류 데이터 토큰화 (0) | 2022.09.15 |
Linux에서 Python 스크립트를 서비스 또는 데몬처럼 실행하는 방법 (0) | 2022.09.15 |