[SQL] BY 쿼리 그룹으로 비율을 계산
SQLBY 쿼리 그룹으로 비율을 계산
나는 다음과 같다 3 열이있는 테이블이 있습니다 :
File User Rating (1-5)
------------------------------
00001 1 3
00002 1 4
00003 2 2
00004 3 5
00005 4 3
00005 3 2
00006 2 3
Etc.
나는 (각 사용자 및 평가를 위해 잘 파일의 비율로 같은 파일의 수를 표시) 다음을 출력하는 쿼리를 생성하려면 :
User Rating Count Percentage
-----------------------------------
1 1 3 .18
1 2 6 .35
1 3 8 .47
2 5 12 .75
2 3 4 .25
PostgreSQL을 통해, 나는 다음과 같은 쿼리를 사용하여 처음 3 열을 포함하는 쿼리를 만드는,하지만 난 GROUP BY 내에서 비율을 계산하는 방법을 알아낼 수있는 방법을 알고있다 :
SELECT
User,
Rating,
Count(*)
FROM
Results
GROUP BY
User, Rating
ORDER BY
User, Rating
여기에서 나는 비율 계산은 각 사용자 / 평가 그룹에 적용 할.
해결법
-
==============================
1.
WITH t1 AS (SELECT User, Rating, Count(*) AS n FROM your_table GROUP BY User, Rating) SELECT User, Rating, n, (0.0+n)/(COUNT(*) OVER (PARTITION BY User)) -- no integer divide! FROM t1;
또는
SELECT User, Rating, Count(*) OVER w_user_rating AS n, (0.0+Count(*) OVER w_user_rating)/(Count(*) OVER (PARTITION BY User)) AS pct FROM your_table WINDOW w_user_rating AS (PARTITION BY User, Rating);
나는 볼 것이다 이들 중 하나 또는 다른 수율 RDBMS의 적절한 도구를 사용하여 더 나은 쿼리 계획하는 경우.
-
==============================
2.또는, 당신은 구식 방법으로 할 수 - grok 수에 틀림 쉽게 :
또는, 당신은 구식 방법으로 할 수 - grok 수에 틀림 쉽게 :
select usr.User as User , usr.Rating as Rating , usr.N as N , (100.0 * item.N) / total.N as Pct from ( select User, Rating , count(*) as N from Results group by User , Rating ) usr join ( select User , count(*) as N from Results group by User ) total on total.User = usr.User order by usr.User, usr.Rating
건배!
-
==============================
3.이 작업을 수행하는 가장 좋은 방법은 윈도우 기능을 할 것이다.
이 작업을 수행하는 가장 좋은 방법은 윈도우 기능을 할 것이다.
-
==============================
4.
WITH data AS (SELECT User, Rating, Count(*) AS Count FROM Results GROUP BY User, Rating) SELECT User, Rating, Count, (0.0+n)/(SUM(Count) OVER (PARTITION BY User)) FROM data;
-
==============================
5.TSQL에서이 작업을해야합니다
TSQL에서이 작업을해야합니다
SELECT User, Rating, Count(*), SUM(COUNT(*)) OVER (PARTITION BY User, Rating ORDER BY User, Rating) AS Total, Count(*)/(SUM(COUNT(*)) OVER (PARTITION BY User, Rating ORDER BY User, Rating)) AS Percentage FROM Results GROUP BY User, Rating ORDER BY User, Rating
from https://stackoverflow.com/questions/6207224/calculating-percentages-with-group-by-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] `쇼는 오라클 SQL에서 table` 동등한를 만들 (0) | 2020.06.28 |
---|---|
[SQL] SQL 서버 2008 IIF 문을 사용할 것 같지 않습니다 (0) | 2020.06.28 |
[SQL] T-SQL : 어떻게 대소 문자를 구분 고유 키를 만들려면 어떻게해야합니까? (0) | 2020.06.28 |
[SQL] SA 비밀번호를 복구 [폐쇄] (0) | 2020.06.28 |
[SQL] 동의어 대 뷰를 사용하는 장점 / 단점은 무엇입니까? (0) | 2020.06.28 |