[SQL] 같은 select 문에 의해 수와 그룹을 사용하는 방법
SQL같은 select 문에 의해 수와 그룹을 사용하는 방법
나는에 의해 그룹이있는 SQL 선택 쿼리가 있습니다. 나는 문에 의해 그룹 후 모든 레코드를 계산합니다. 이 직접 SQL에서 수있는 방법이 있습니까? 예를 들어, 사용자와 테이블을 가진 나는 다른 도시와 사용자의 총 수를 선택합니다
select town, count(*) from user
group by town
나는 모든 행의 사용자 수와 모든 도시와 열 및 다른 갖고 싶어.
합계가 3 개 도시와 58을 갖는 사용자에 대한 결과의 예 :
Town Count
Copenhagen 58
NewYork 58
Athens 58
해결법
-
==============================
1.이것은 당신이 (각각의 사용자 수와 함께, 마을의 목록을) 원하는 것을 할 것입니다 :
이것은 당신이 (각각의 사용자 수와 함께, 마을의 목록을) 원하는 것을 할 것입니다 :
select town, count(town) from user group by town
그룹 BY를 사용할 때 대부분의 집계 함수를 사용할 수 있습니다.
업데이트 (질문과 의견에 변화를 다음)
당신은 사용자 수에 대한 변수를 선언하고 그와 함께 선택 사용자의 수를 설정할 수 있습니다.
DECLARE @numOfUsers INT SET @numOfUsers = SELECT COUNT(*) FROM user SELECT DISTINCT town, @numOfUsers FROM user
-
==============================
2.당신은 (... DISTINCT) COUNT 사용할 수 있습니다 :
당신은 (... DISTINCT) COUNT 사용할 수 있습니다 :
SELECT COUNT(DISTINCT town) FROM user
-
==============================
3.다른 방법은 다음과 같습니다
다른 방법은 다음과 같습니다
/* Number of rows in a derived table called d1. */ select count(*) from ( /* Number of times each town appears in user. */ select town, count(*) from user group by town ) d1
-
==============================
4.당신이 계산에 의해 주문하려는 경우 당신이 할 수있는 (사운드 간단하지만 난 그 작업을 수행하는 방법의 스택에 답을 발견은`t) :
당신이 계산에 의해 주문하려는 경우 당신이 할 수있는 (사운드 간단하지만 난 그 작업을 수행하는 방법의 스택에 답을 발견은`t) :
SELECT town, count(town) as total FROM user GROUP BY town ORDER BY total DESC
-
==============================
5.오라클 사용하면 분석 기능을 사용할 수 있습니다 :
오라클 사용하면 분석 기능을 사용할 수 있습니다 :
select town, count(town), sum(count(town)) over () total_count from user group by town
다른 옵션은 하위 쿼리를 사용하는 것입니다 :
select town, count(town), (select count(town) from user) as total_count from user group by town
-
==============================
6.텐 삭제되지 않은 답변; 대부분의 사용자가 무엇을 요구하지 않습니다. 대부분의 답변의 58 각 마을에있는 사용자 대신 총 (58)이 있다는 생각으로 질문을 잘못은 읽기. 심지어 올바른지 그 몇 최적되지 않습니다.
텐 삭제되지 않은 답변; 대부분의 사용자가 무엇을 요구하지 않습니다. 대부분의 답변의 58 각 마을에있는 사용자 대신 총 (58)이 있다는 생각으로 질문을 잘못은 읽기. 심지어 올바른지 그 몇 최적되지 않습니다.
mysql> flush status; Query OK, 0 rows affected (0.00 sec) SELECT province, total_cities FROM ( SELECT DISTINCT province FROM canada ) AS provinces CROSS JOIN ( SELECT COUNT(*) total_cities FROM canada ) AS tot; +---------------------------+--------------+ | province | total_cities | +---------------------------+--------------+ | Alberta | 5484 | | British Columbia | 5484 | | Manitoba | 5484 | | New Brunswick | 5484 | | Newfoundland and Labrador | 5484 | | Northwest Territories | 5484 | | Nova Scotia | 5484 | | Nunavut | 5484 | | Ontario | 5484 | | Prince Edward Island | 5484 | | Quebec | 5484 | | Saskatchewan | 5484 | | Yukon | 5484 | +---------------------------+--------------+ 13 rows in set (0.01 sec)
SHOW 세션 상태 LIKE '핸들러 %';
+----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Handler_commit | 1 | | Handler_delete | 0 | | Handler_discover | 0 | | Handler_external_lock | 4 | | Handler_mrr_init | 0 | | Handler_prepare | 0 | | Handler_read_first | 3 | | Handler_read_key | 16 | | Handler_read_last | 1 | | Handler_read_next | 5484 | -- One table scan to get COUNT(*) | Handler_read_prev | 0 | | Handler_read_rnd | 0 | | Handler_read_rnd_next | 15 | | Handler_rollback | 0 | | Handler_savepoint | 0 | | Handler_savepoint_rollback | 0 | | Handler_update | 0 | | Handler_write | 14 | -- leapfrog through index to find provinces +----------------------------+-------+
영업의 맥락에서 :
SELECT town, total_users FROM ( SELECT DISTINCT town FROM canada ) AS towns CROSS JOIN ( SELECT COUNT(*) total_users FROM canada ) AS tot;
어린 아이에서 한 행이 있기 때문에, 십자가는 가입 달리 수 있습니다로 볼륨 감으로하지 않습니다.
일반적인 패턴은 COUNT (*) 대신 COUNT (마을)입니다. 후자는 이러한 맥락에서 필요하지 널 (null), 되 고 도시를 확인하는 것을 의미한다.
-
==============================
7.당신은 milkovsky 말한 것처럼 COUNT 내부 DISTINCT 사용할 수 있습니다
당신은 milkovsky 말한 것처럼 COUNT 내부 DISTINCT 사용할 수 있습니다
나의 경우에는:
select COUNT(distinct user_id) from answers_votes where answer_id in (694,695);
이 대답의 수를 끌어 것은 하나의 계수와 같은 USER_ID 고려 투표
-
==============================
8.나는이 SQL Server의 이전 게시물, 알고 :
나는이 SQL Server의 이전 게시물, 알고 :
select isnull(town,'TOTAL') Town, count(*) cnt from user group by town WITH ROLLUP Town cnt Copenhagen 58 NewYork 58 Athens 58 TOTAL 174
-
==============================
9.당신이 마을과 총 사용자 수를 선택하려면 다음이 쿼리를 사용할 수 있습니다 :
당신이 마을과 총 사용자 수를 선택하려면 다음이 쿼리를 사용할 수 있습니다 :
SELECT Town, (SELECT Count(*) FROM User) `Count` FROM user GROUP BY Town;
-
==============================
10.당신은 카운트 옵션과 함께 모두 선택 쿼리를 사용하려면,이 시도 ...
당신은 카운트 옵션과 함께 모두 선택 쿼리를 사용하려면,이 시도 ...
select a.*, (Select count(b.name) from table_name as b where Condition) as totCount from table_name as a where where Condition
-
==============================
11.다음 코드를 사용해보십시오 :
다음 코드를 사용해보십시오 :
select ccode, count(empno) from company_details group by ccode;
from https://stackoverflow.com/questions/2722408/how-to-use-count-and-group-by-at-the-same-select-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 사용하여 하위 쿼리 * 1를 존재하거나 존재 (0) | 2020.03.16 |
---|---|
[SQL] WHERE 절에 알 수없는 열 (0) | 2020.03.16 |
[SQL] 어떻게 java.sql.ResultSet의 크기를받을 수 있나요? (0) | 2020.03.16 |
[SQL] T-SQL과 함께 일 월 및 연도에서 날짜를 만들기 (0) | 2020.03.16 |
[SQL] 어떻게 ID 값을 얻기 위해 INSERT 문 OUTPUT 절을 사용합니까? (0) | 2020.03.16 |