없이 SQL에서 계층 수준을 합산내가이처럼 보이는 SQL 서버 테이블이 커서
1,2012-05-10,300
2,2012-05-10,1100
3,2012-05-10,10000
내가 쿼리를 만들 싶습니다을 그 총 플레이어 수, 쿼리가 실행 된 날짜 및 통화 층의 분석을 반환하므로 출력은 항상 다음과 같이 1 행만 표시되어야합니다.
Date: 2012-05-10
Total Players: 3
100 - 900 : 1
999 - 1500 : 1
9000 - MAX : 1
커서를 사용하여 계층 수준을 계산하는 방법을 알고 있습니다. 커서없이 계층 수준을 계산하는 방법이 있는지 궁금합니다. SELECT CASE를 사용하려고하면 레코드 당 1 행을 얻게됩니다. 나는 updatedAt에 의해 그룹화를 시도하고 같은 것을 반환합니다. 어떤 도움을 주시면 감사하겠습니다.
SELECT
'0 - 10000' = COUNT(CASE WHEN CreditBalance >= 0 AND CreditBalance <= 10000 THEN 1 ELSE 0 END),
'10001 - 20000' = COUNT(CASE WHEN CreditBalance >= 10001 AND CreditBalance <= 20000 THEN 1 ELSE 0 END),
'20001 - 30000' = COUNT(CASE WHEN CreditBalance >= 20001 AND SUM(CreditBalance) <= 30000 THEN 1 ELSE 0 END),
'30001 - 60000' = COUNT(CASE WHEN CreditBalance >= 30001 AND SUM(CreditBalance) <= 60000 THEN 1 ELSE 0 END),
'60001 - 100000' = COUNT(CASE WHEN CreditBalance >= 60001 AND SUM(CreditBalance) <= 100000 THEN 1 ELSE 0 END),
'100001 - 150000' = COUNT(CASE WHEN CreditBalance >= 100001 AND SUM(CreditBalance) <= 150000 THEN 1 ELSE 0 END),
'150001 - 200000' = COUNT(CASE WHEN CreditBalance >= 150001 AND SUM(CreditBalance) <= 200000 THEN 1 ELSE 0 END),
'200001 - 500000' = COUNT(CASE WHEN CreditBalance >= 200001 AND SUM(CreditBalance) <= 500000 THEN 1 ELSE 0 END),
'500001 - 1000000' = COUNT(CASE WHEN CreditBalance >= 500001 AND SUM(CreditBalance) <= 1000000 THEN 1 ELSE 0 END),
'1000001 - Max' = COUNT(CASE WHEN CreditBalance >= 1000001 THEN 1 ELSE 0 END),
CONVERT(DATE,LastUpdateDate) AS [Day],
SUM(CreditBalance) AS TotalDailyCurrency,
COUNT(PlayerID) AS DailyActiveUsers,
AVG(CreditBalance) AS AverageCreditsPerMAU
FROM dbo.PlayerBalances
WHERE CONVERT(DATE,LastUpdateDate) = CONVERT(DATE,GETUTCDATE())
GROUP BY LastUpdateDate
그리고 난 점점 오전 : 다음 쿼리와 솔루션 1을 사용
메시지 130, 수준 15, 상태 1, 줄 7 는 집계 또는 하위 쿼리가 포함 된 식에서는 집계 함수를 수행 할 수 없습니다 .
간격 사이의 균형을 유지하면서 사용자를 놓칠 수 있기 때문에 간격이 잘못되었습니다. 나는. '10000.5'. (row1)'<= 10000' 및 (row2)'> 10000' – Johan