[SQL] 어떻게 SQL에서 효율적으로 열 값의 발생을 계산하려면?
SQL어떻게 SQL에서 효율적으로 열 값의 발생을 계산하려면?
나는 학생들의 테이블이 있습니다 :
id | age
--------
0 | 25
1 | 25
2 | 23
나는 모든 학생들을위한 쿼리 및 추가 열을하고자하는 같은 나이의 얼마나 많은 학생들이 있습니다 카운트 것을 :
id | age | count
----------------
0 | 25 | 2
1 | 25 | 2
2 | 23 | 1
이 일을 가장 효율적인 방법은 무엇입니까? 나는 하위 쿼리가 느린 것을 두려워하고, 더 나은 방법이 있는지 궁금하네요. 이 있습니까?
해결법
-
==============================
1.이 작업을해야합니다 :
이 작업을해야합니다 :
SELECT age, count(age) FROM Students GROUP by age
당신은 당신이 같은 하위 쿼리와 위의를 포함 할 수 있습니다뿐만 아니라 ID를해야하는 경우 :
SELECT S.id, S.age, C.cnt FROM Students S INNER JOIN (SELECT age, count(age) as cnt FROM Students GROUP BY age) C ON S.age = C.age
-
==============================
2.Oracle을 사용하는 경우, 다음 기능이라고 분석 트릭을 할 것입니다. 그것은 다음과 같습니다 :
Oracle을 사용하는 경우, 다음 기능이라고 분석 트릭을 할 것입니다. 그것은 다음과 같습니다 :
select id, age, count(*) over (partition by age) from students;
Oracle을 사용하지 않는 경우에, 당신은 카운트에 다시 가입해야합니다 :
select a.id, a.age, b.age_count from students a join (select age, count(*) as age_count from students group by age) b on a.age = b.age
-
==============================
3.여기에 또 다른 솔루션입니다. 이와 매우 간단한 문법을 사용한다. 수락 솔루션의 첫 번째 예는 마이크로 소프트 SQL의 이전 버전에서 작동하지 않았다 (즉 2000)
여기에 또 다른 솔루션입니다. 이와 매우 간단한 문법을 사용한다. 수락 솔루션의 첫 번째 예는 마이크로 소프트 SQL의 이전 버전에서 작동하지 않았다 (즉 2000)
SELECT age, count(*) FROM Students GROUP by age ORDER BY age
-
==============================
4.내가 좋아하는 일을 할 것입니다 :
내가 좋아하는 일을 할 것입니다 :
select A.id, A.age, B.count from students A, (select age, count(*) as count from students group by age) B where A.age=B.age;
-
==============================
5.
select s.id, s.age, c.count from students s inner join ( select age, count(*) as count from students group by age ) c on s.age = c.age order by id
-
==============================
6."연령"열에서 데이터가 유사한 기록이있는 경우, 그것은 각각의 학생에게 적절한 수를 정렬에 혼란을 야기 (많은 사람들이 25 세 즉, 많은 사람들이 (32) 등이다). 그것을 방지하기 위해, 나뿐만 아니라 학생 ID의 테이블에 합류했다.
"연령"열에서 데이터가 유사한 기록이있는 경우, 그것은 각각의 학생에게 적절한 수를 정렬에 혼란을 야기 (많은 사람들이 25 세 즉, 많은 사람들이 (32) 등이다). 그것을 방지하기 위해, 나뿐만 아니라 학생 ID의 테이블에 합류했다.
SELECT S.id, S.age, C.cnt FROM Students S INNER JOIN (SELECT id, age, count(age) as cnt FROM Students GROUP BY student,age) C ON S.age = C.age *AND S.id = C.id*
from https://stackoverflow.com/questions/1503959/how-to-count-occurrences-of-a-column-value-efficiently-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 컬렉션 / 배열 / 목록에서 쉼표로 구분 된 문자열을 만들기위한 가장 정교한 방법은? (0) | 2020.04.17 |
---|---|
[SQL] 자바에서 좋은 동적 SQL 빌더 라이브러리가 있습니까? [닫은] (0) | 2020.04.17 |
[SQL] 어떻게 내가 업데이트 위로에게 SQL 서버 (100) 기록을 할 수 (0) | 2020.04.17 |
[SQL] 기본 키를 사용하여 이메일 주소? (0) | 2020.04.17 |
[SQL] 2008 SQL 서버를 사용하는 경우 조건이 어떻게 여러 CASE해야합니까? (0) | 2020.04.17 |