다음과 같은 테이블이 있습니다. log (log_id, log_success (bool), log_created)
내가 선택하고 3 열 반환하고자 date
success
및 no_success
이전 테이블에 존재하는 마지막 날까지를 집계하지 않습니다.
이 쿼리를 만들었습니다.
SELECT
log_created as 'date'
COUNT(*) AS 'count',
SUM(log_success) AS 'success'
SUM('count' - 'success') AS 'no_success'
FROM send_log
GROUP BY DATE_FORMAT(log_created, '%Y-%m-%d');
이 쿼리로 달성할 수 있습니까? 내 구문이 정확합니까?
감사.
동일한 선택 절 내에서 선택에 정의된 별칭을 재사용할 수 없습니다. 그 이유는 액세스할 때 정의되지 않았을 수도 있기 때문입니다. 그러나 다음과 같은 논리를 쉽게 반복할 수 있습니다.
SELECT
log_created AS date,
SUM(log_success) AS success,
COUNT(*) - SUM(log_success) AS no_success,
FROM send_log
GROUP BY
log_created;
쿼리 DATE_FORMAT
의 group by 절 에서 호출하는 이유를 모르겠습니다 . DATE_FORMAT
일반적으로 특정 방식으로 형식이 지정된 날짜를 보고 싶기 때문에 호출하는 프레젠테이션 계층 함수입니다. 그것은 그가 나타납니다 때문에 log_created
이미 날짜입니다, 호출 할 필요가 없다 DATE_FORMAT
집계 때에는. MySQL 날짜의 기본 형식은 이미 Y-m-d
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다