집계 쿼리(쿼리 빌더 7)
애플리케이션에서는 현재 사용자 수(또는 특정 조건을 충족하는 사용자), 전체 사용자의 최대 포인트, 사용자의 평균 점수 등과 같은 일부 통계 데이터를 사용하는 경우가 많습니다. ThinkPHP는 이에 대한 방법을 제공합니다. 시리즈의 기본 제공 방법은 다음과 같습니다.
방법 | 설명 |
---|---|
count | 숫자를 계산합니다. 매개변수는 계산할 필드 이름입니다(선택 사항). |
최대값 가져오기, 매개변수는 계산할 필드 이름(필수) | |
최소값 가져오기, 매개변수는 계산할 필드 이름(필수) | |
평균값을 가져옵니다. 매개변수는 계산할 필드 이름입니다.(필수) | |
매개변수는 계산할 필드 이름입니다(필수). |
사용자 수 가져오기:
Db::table('think_user')->count();
실제 생성된 SQL 문은 다음과 같습니다.
SELECT COUNT(*) AS tp_count FROM `think_user` LIMIT 1
또는 필드 통계 기반:
Db::table('think_user')->count('id');
생성된 SQL 문은 다음과 같습니다.
SELECT COUNT(id) AS tp_count FROM `think_user` LIMIT 1
사용자의 최대 포인트 가져오기:
Db::table('think_user')->max('score');
생성된 SQL 문은 다음과 같습니다.
SELECT MAX(score) AS tp_max FROM `think_user` LIMIT 1
가져오려는 최대 값은 다음과 같습니다. 숫자 값이 아닌 두 번째 매개변수를 사용하면 강제 변환을 끌 수 있습니다.
Db::table('think_user')->max('name',false);
포인트가 0보다 큰 사용자의 최소 포인트 가져오기:
Db::table('think_user')->where('score', '>', 0)->min('score');
max 방법과 동일하며 min도 두 번째 매개변수 사용을 지원합니다.
Db::table('think_user')->where('score', '>', 0)->min('name',false);
사용자의 평균 점수 가져오기:
Db::table('think_user')->avg('score');
생성된 SQL 문:
SELECT AVG(score) AS tp_avg FROM `think_user` LIMIT 1
사용자의 총 점수 통계:
Db::table('think_user')->where('id',10)->sum('score');
생성된 SQL 문:
SELECT SUM(score) AS tp_sum FROM `think_user` LIMIT 1
그룹을 사용하려는 경우 집계 쿼리를 수행하려면, 쿼리를 직접 구현해야 합니다. 예:
Db::table('score')->field('user_id,SUM(score) AS sum_score')->group('user_id')->select();