반응형
쿼리에서 그룹 함수 오류를 잘못 사용하는 중
class_id와 month id를 기준으로 student_attendance_daily의 데이터를 변환하려고 하는데 오류가 발생합니다. invalid use of group function
저는 MariaDB 10.4를 사용하고 있기 때문에 JSON_ARRAGEG를 사용할 수 없지만 10.5에서 사용할 수 있으며 AWS RDS에서 사용하고 있으며 업그레이드할 수 있는 옵션이 없어 이렇게 노력하고 있습니다.
여기 제 질문이 있습니다.
INSERT INTO attendance_student (class_id, month_id, attendance_details, created_at, updated_at)
SELECT
class_id,
DATE_FORMAT(attendance_date, '%Y%m') AS month_id,
CONCAT('[',
GROUP_CONCAT(
CONCAT(
'{"att_date":"', DATE_FORMAT(attendance_date, '%d-%m-%Y'), '",',
'"att_status":"', attendance_status, '",',
'"att_punch":',
IFNULL(
CONCAT('[',
GROUP_CONCAT(
CONCAT(
'{"did":"', bio_punch_details, '",',
'"pat":"', IFNULL(DATE_FORMAT(created_at, '%d-%m-%Y %H:%i:%s'), ''), '",',
'"ss":"', IFNULL(bio_punch_details, ''), '"}'
)
ORDER BY created_at ASC
SEPARATOR ','
),
']'),
'[]'
),
'}'
)
ORDER BY attendance_date ASC
SEPARATOR ','
)
, ']') AS attendance_details,
NOW() AS created_at,
NOW() AS updated_at
FROM student_attendance_daily
GROUP BY class_id, month_id;
다음과 같은 데이터를 삽입하고 싶습니다.
(1, 136, 1, '[{\"att_date\":\"12-01-2023\",\"att_status\":0,\"att_punch\":[{\"did\":\"1\",\"pat\":\"12-01-2023 18:35:33\",\"ss\":\"ss_std_20230112183534_667757.jpg\"}]},{\"att_date\":\"20-01-2023\",\"att_status\":1,\"att_punch\":[{\"did\":\"2\",\"pat\":\"20-01-2023 00:29:48\",\"ss\":\"ss_std_20230120002949_672689.jpg\"}]}]', '2023-01-12 18:35:34', '2023-01-20 00:29:49')
이것은 출석_불참 스키마입니다.
CREATE TABLE `attendance_student` (
`id` int(11) NOT NULL,
`class_id` int(11) NOT NULL,
`month_id` int(11) NOT NULL,
`attendance_details` mediumtext COLLATE utf8_unicode_ci NOT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
그리고 그것은 student_herance_daily 테이블 스키마입니다.
CREATE TABLE `student_attendance_daily` (
`id` int(11) NOT NULL,
`class_id` int(11) NOT NULL,
`attendance_date` date NOT NULL,
`attendance_status` tinyint(1) NOT NULL,
`late_status` tinyint(1) DEFAULT NULL,
`attendance_remarks` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`bio_punch_details` text COLLATE utf8_unicode_ci,
`created_at` datetime NOT NULL,
`created_by` int(11) NOT NULL,
`updated_at` datetime NOT NULL,
`updated_by` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
동일한 쿼리에서 집계 함수를 집계 함수 안에 넣을 수 없습니다.
하위 쿼리를 사용하여 내부 집계를 생성한 다음 외부 쿼리에서 외부 집계를 수행해야 합니다.추가 수준의 내포 JSON이 있는 경우 추가 수준의 하위 쿼리가 필요합니다.
이는 JSON_ARRAGEG() 기능을 업그레이드하여 사용할 수 있는 경우에도 적용됩니다.
언급URL : https://stackoverflow.com/questions/75547394/getting-invalid-use-of-group-function-error-in-query
반응형
'programing' 카테고리의 다른 글
CSS에서 배경 이미지를 제거하려면 어떻게 해야 합니까? (0) | 2023.08.17 |
---|---|
Google Analytics에서 AJAX에서 호출한 페이지를 추적하려면 어떻게 해야 합니까? (0) | 2023.08.17 |
스크롤 막대(마이너스) 없이 화면 너비를 얻는 방법은 무엇입니까? (0) | 2023.08.17 |
메이븐 종단을 사용하여 스프링 활성 종단을 설정하는 방법 (0) | 2023.08.17 |
jQuery를 사용하여 텍스트를 변경하는 방법 (0) | 2023.08.17 |