2016-09-23 6 views
-2

sub_selectでdatabase_sizeのMAXを指定して、別のserver_name、dateを選択する必要があります 個別のserver_namesを取得することはできません。常に重複(私のテーブルには、重複する値を持っていないにもかかわらず)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 

私が欲しいの結果を返す: ノート*日付は別個のものであるが、DATABASE_SIZEは区別され、セ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 SERVER_NAMEをしたい(ただし、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を複数回取得しましたが、データベースの最大サイズがserver_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を使用していますか? –

+0

@a_horse_with_no_name私はDB2 UDBを使用しています(探しているクエリはどのバージョンのDB2にも適用できます) – shizuka

答えて

0

あなたの質問にタグを付けたので、私はMicrosoft 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」というタグは** SQL **の**ではなく** SQLです。 SQL Serverを対象とした質問には 'sql-server'というタグが付いているはずです –

+0

@a_horse_with_no_name、私は同意しますが、Microsoft SQL Serverを使用する多くの人は、自分の製品を「SQL」と呼び、あまりにも疑問です。これは、テキストエディタ「単語」を呼び出すのと同じ文化です。 –

関連する問題