2013-03-20 3 views
0

열 표시 방법 SUM 및 열 비율이 작동하지 않습니까? 간단한 설명은쿼리 Sql 백분율 (닫힘)

:

Total | CodeAll | Description | Code 
------------------------------------- 
3  1c   Test   1 
3  1b   Test2   1 
10  1a   Test3   1 
2  2a   Test4  2 
5  2b   Test5   2 
5  3a   Test6   3 
3  3b   Test7   3 

쿼리 # 2 :

SELECT COUNT(CodeAll) AS SumCall, LEFT(CodeAll, 1) AS Code FROM Data 
WHERE DATE BETWEEN '2013/03/01 00:00:00' AND '2013/03/01 23:59:00' 
AND (CodeAll Is Not Null) GROUP BY LEFT(CodeAll, 1)` 

내가 2 SQL 문

SELECT TOP 100 PERCENT COUNT(CodeAll) AS Total, CodeAll, Description, 
LEFT(CodeAll, 1) AS Code 
FROM Data WHERE DATE BETWEEN '2013/03/01 00:00:00' AND '2013/03/01 23:59:00' 
AND (CodeAll Is Not Null) 
GROUP BY CodeAll, Description ORDER BY Code 
ASC 

결과이개 결과 :

SumCall| Code 
16  1 
7  2 
8  3 

내가 생산하는 2 query 1로 쿼리를 결합하려는 :

Total | CodeAll | Description | Code | SUM | Percentage 
    3  1c   Test   1  16 18.75 % 
    3  1b   Test2   1  16 18.75 % 
    10  1a   Test3   1  16 62.5 % 
    2  2a   Test4  2  7 28.57 % 
    5  2b   Test5   2  7 71.43 % 
    5  3a   Test6   3  8 62.5 % 
    3  3b   Test7   3  8 37.5 % 

쿼리 ??

+0

SUM 및 백분율은 표의 값입니까? 또는 계산되어야합니까? – Aleks

+0

계산 대상 – rian

+0

어떤 DBMS를 사용하고 있습니까? 신탁? 포스트그레스? –

답변

1

SQL Fiddle

MS SQL 서버 2008 스키마 설정 도와주세요 :

CREATE TABLE TEST_TAB 
    ([Total] int, [CodeAll] varchar(2), [Description] varchar(5), [Code] int) 
; 

INSERT INTO TEST_TAB 
    ([Total], [CodeAll], [Description], [Code]) 
VALUES 
    (3, '1c', 'Test', 1), 
    (3, '1b', 'Test2', 1), 
    (10, '1a', 'Test3', 1), 
    (2, '2a', 'Test4', 2), 
    (5, '2b', 'Test5', 2), 
    (5, '3a', 'Test6', 3), 
    (3, '3b', 'Test7', 3) 
; 

검색어 1 :

select v.*, 100.0 * v.total/v.group_total percentage 
    from (
    select t.*, 
      sum(total) over(partition by code) group_total 
     from TEST_TAB t 
) v 

Results :

| TOTAL | CODEALL | DESCRIPTION | CODE | GROUP_TOTAL |  PERCENTAGE | 
------------------------------------------------------------------------ 
|  3 |  1c |  Test | 1 |   16 |   18.75 | 
|  3 |  1b |  Test2 | 1 |   16 |   18.75 | 
| 10 |  1a |  Test3 | 1 |   16 |   62.5 | 
|  2 |  2a |  Test4 | 2 |   7 | 28.571428571428 | 
|  5 |  2b |  Test5 | 2 |   7 | 71.428571428571 | 
|  5 |  3a |  Test6 | 3 |   8 |   62.5 | 
|  3 |  3b |  Test7 | 3 |   8 |   37.5 |