집 >데이터 베이스 >MySQL 튜토리얼 >MySQL은 데이터를 요약하고 그룹화합니다.
데이터 요약 및 그룹화
쿼리 문 ---> 결과 집합(여러 데이터 조각) ---> 단일 행 레코드
1. 집계 함수:字Sum() 지정된 열의 모든 비어 있지 않은 값에 대한 숫자 및
AVG() 숫자를 지정된 열의 모든 비어 있지 않은 값에 대한 숫자
Min(), 문자, 날짜/시간 반환 지정된 열의 지정된 열 최소 숫자, 가장 빠른 날짜 또는 가장 작은 문자열
max() 숫자, 문자, 날짜/시간 지정된 열의 가장 큰 숫자, 가장 늦은 날짜 또는 가장 큰 문자 집합을 반환합니다
count() 모든 행- 기반 데이터 유형 통계 결과 모든 레코드 행 수 수집
예: 플레이어 테이블에 몇 명의 플레이어가 있는지 쿼리
select count (user_qq) from users
select count(*) from users
예: QQ 번호는 12301 을 조회합니다. 플레이어 게임의 총점
user_qq='12301'인 점수에서 '총점'으로 sum(score)을 선택하세요
예: QQ 번호가 12302인 플레이어의 평가 점수를 조회
user_qq='12302'인 점수에서 avg(score)를 '평균 점수'로 선택
예: 1번 게임의 최고 점수를 쿼리
gno=1인 점수에서 max(score)를 '최고 점수'로 선택
예: QQ 번호가 12302인 플레이어를 쿼리합니다. 총점, 평균 점수 및 최고 점수
sum(점수)을 '총점'으로, avg(점수)를 '평균 점수'로, max(점수)를 '최고점'으로 선택 user_qq = '12302'
인 점수에서 '점수'
2. GROUP BY를 사용하여 그룹화합니다.
예: 각 플레이어의 총 점수, 평균 점수, 최대 점수를 쿼리
합계(점수)를 '총 점수'로 선택합니다. ,avg(점수)는 '평균 점수', max(점수)는 user_qq
별 점수 그룹에서 '최고 점수'로 표시됩니다. 예: 각 플레이어의 평균 점수를 쿼리하고 플레이어의 QQ 번호와 평균 점수를 표시합니다
user_qq 선택 , avg(점수)를 user_qq
별로 점수 그룹에서 '평균 점수'로 지정
3. 그룹 결과 필터링
GROUP BY 절을 사용할 때 HAVING 절을 사용하여 그룹 통계에 대한 통계 조건을 추가로 설정할 수 있습니다. HAVING 절과 GROUP BY 절 사이는 WHERE 절 및 SELECT와 동일합니다.
절과 WHERE 절 사이의 관계의 차이점은 HAVING 절에서는 집계 함수의 통계 결과를 필터링 조건으로 사용한다는 점입니다. .
예: 평균 점수가 4000보다 큰 플레이어의 QQ 번호, 총점 및 평균 점수를 쿼리합니다.
점수에서 user_qq, sum(score)를 '총점'으로, avg(score)를 '평균 점수'로 선택 avg(점수) > 4000을 갖는 user_qq로 그룹화
예: 모든 사용자의 평균 점수와 총점을 쿼리하고 평균 점수를 기준으로 역순으로 정렬합니다.
user_qq,avg(score)를 '평균 점수'로 선택 , sun(score) as 'total Score'' from points group by user_qq orde by avg(score) desc
4 SELECT 문의 실행 순서
from 절은 데이터 소스를 지정합니다
where 절 지정된 조건에 따라 레코드를 필터링합니다.
Group by sub 문장은 데이터를 여러 그룹으로 나누는 데 사용됩니다.
계산에 집계 함수를 사용합니다.
has 절을 사용하여 그룹을 필터링합니다.
order by 절을 사용하여 결과 집합을 정렬합니다.
2개의 조인 쿼리1. 다중 테이블 연결
예: 점수 정보 쿼리, 플레이어 닉네임, 게임 이름 및 점수 표시
user_name을 '닉네임'으로 선택, 게임을 '게임 이름'으로 선택 users.user_qq = Score.user_qq 및 game .gno= Score.gno 에서 'score'로 점수를 매깁니다. 한 테이블의 다른 테이블에 해당 데이터가 없으면 연결이 수행되지 않습니다. 연결 바로 뒤에 여러 테이블 이름이 있습니다. 이 연결 방법은 숨겨진 내부 연결에 속합니다.
내부 연결 형식 표시 : table1에서 색상 선택 [Inner] Join table2 on table1.col = table2 .clo1
예: 점수 정보 쿼리, 플레이어의 닉네임, 게임 이름 및 점수 표시
user_name을 '닉네임'으로, g_name을 '게임 이름'으로 선택 , games.gno = 점수 .gno
내부 사용자 가입 점수.user_qq =user.user_qq
玩 예시: 각 플레이어의 닉네임, 총점, 평균점수 확인 SELECT User_name as 'Nickname', SUM (SCORE) AS 'Total Society', AVG (SCORE) AS 'Average' FROM USERS U Inner Join Scores S.user_qq = U.user_qq 그룹: U.user_qq,user_name + 사용자의 '닉네임'으로 user_name, '총점'으로 sum(점수), '평균 점수'로 avg(점수)를 선택합니다. U 내부 조인 S.user_qq = U.user_qq 그룹에서 S 점수를 얻습니다. ;3500 order by avg(score) descOuter Join은 Left Join과 Right Outer Join으로 나누어집니다Outer Join의 특징: 연결 중인 두 테이블의 상태는 다음과 같습니다. 같지 않고 기본 테이블이 있습니다 데이터가 나타나야 하며, 다른 테이블에 일치하는 데이터가 없더라도 NULL로 완료해야 합니다. - ” ” ” ” 테이블은 '왼쪽 테이블'이고 나중에 나타나는 테이블은 '오른쪽 테이블'입니다외부 조인 형식: SELECT COL_LIST FROM TABLE1 LEFT/RIGHT[OUTER] JOIN TABLE2 ON TABLE1.COL=TABLE2.COL 예: 모든 플레이어에 대한 정보 쿼리 5번 게임의 점수 정보 user_name을 '닉네임'으로 선택 gno를 '게임 번호'로, 사용자의 점수를 '점수'로 U 왼쪽 조인 점수 S를 U.user_qq=S.user_qq에 두고 S.gno=5위 내용은 MySQL은 데이터를 요약하고 그룹화합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!