2016-09-23 2 views
-2

sub_select에서 database_size의 MAX를 사용하여 distinct server_name, date를 선택해야합니다. 고유 한 server_names를 얻을 수 없습니다. 내 쿼리는 다음과 같습니다. 참고 * 날짜는 별개의 database_size는 별개이며 : 항상 (내 테이블에 중복 값이없는 경우에도)subselect에서 MAX와 Distinct를 사용하는 방법

내 테이블

id server_name  database_size received_at 
1 [email protected]  271254016 2016-04-28 
2 [email protected] 61739776 2016-05-03 
3 [email protected]  61438464 2016-05-03 
4 [email protected]  280043520 2016-05-03 

내가 원하는 결과 중복을 반환 그 rver_name은 구별됩니다 -이 값 중 어느 것도 동일해야합니다.

[email protected] 271254016 2016-04-28 
[email protected] 274209280 2016-04-29 
[email protected] 268375040 2016-04-30 
[email protected] 277126400 2016-05-01 

나는이 쿼리 시도 : 이, 내가 DISTINCT 서버 _ 이름을 마우스 오른쪽 버튼으로 원하는되지 않은 (그러나 DISTINCT 두는 것은 도움이되지 않습니다 - 여전히 같은 서버 _ 이름을 반환)

select server_name, sum(data_size) as data_size, date from (select date(received_at) as date, sum(database_size) as data_size, 
server_name from schema.db_stats group by date(received_at), server_name) where server_name like '%abc%' group by date, server_name order by date 

을하지만 도착 : 나는 server_name을 여러 번 얻었는데, 최대 값 database_size를 가진 server_name 만 필요합니다.

[email protected] 271254016 2016-04-28 
[email protected] 274209280 2016-04-29 
[email protected] 268375040 2016-04-30 
[email protected] 277126400 2016-05-01 
[email protected] 277126400 2016-05-02 
[email protected] 61739776 2016-05-03 
[email protected] 61438464 2016-05-03 
[email protected]  280043520 2016-05-03 

누군가 도와주세요. 정말 감사하겠습니다.

+1

내가 샘플 데이터와 당신이 찾고있는 결과 사이의 관계를 볼 수 없습니다. –

+0

어떤 DBMS를 사용하고 있습니까? 내가 ** DB2 UDB는을 (내가 찾고 있어요 쿼리는 DB2의 모든 버전에 적용 할 수있는) –

+0

@a_horse_with_no_name하지 ** "SQL 서버"에 대한 - 그것은 SQL, 음, 위해입니다. SQL 서버를위한 것입니다 질문은 SQL-server' – shizuka

답변

0

나는 당신이 당신의 질문 를 태그 한 이후, 마이크로 소프트 SQL Server를 사용하는 것 같아요. 나중에 사람들이 해당 브랜드에 대한 최상의 솔루션으로 답변하는 데 도움이되므로 사용하는 SQL 데이터베이스의 브랜드로 질문에 태그를 지정하면 도움이됩니다.

나는이 테스트를하지 않은,하지만 다음과 같은 당신이 원하는 것을 할 것입니다 믿습니다

SELECT server_name, date, data_size 
FROM (
    SELECT server_name, date, 
     ROW_NUMBER() OVER (PARTITION BY server_name, date ORDER BY data_size DESC) AS RowNumber 
    FROM (
     SELECT server_name, DATE(received_at) AS date, SUM(database_size) as data_size, 
     FROM schema.db_stats 
     WHERE server_name LIKE '%abc%' 
     GROUP BY server_name, DATE(received_at) 
    ) 
) 
WHERE RowNumber = 1; 
+0

태그 'sql'가 사용하고 –

+0

@a_horse_with_no_name, 내가 동의하지만, Microsoft SQL Server를 사용하는 많은 사람들이 그들의 제품 호출하는 습관을 가지고 내가 관찰 "SQL을"및 태그 '태그되어야한다 질문도 그렇게. 이것은 텍스트 편집기라는 단어와 동일한 문화입니다. –

관련 문제