2017-09-16 4 views
-1

を選択していません。 しかしそれはありません!私の結果のSQLテーブルでSQLビューのコードは、私がこのSQLビューを持っている最大

それは次のようになります。

DATE  BOOK_TITLE Royalty_type Avg_list_price 
2016-07-20 name1  N/A   1,99 
2016-07-21 name2  60%   2 
2016-07-22 name3  60%   2 

UPD:もう一度: 私はこのSQLはそれは私が書かれていません原因んかを理解してみてください。たとえば、別のデータベースとormを使用してこれを書き直す必要があるとします。 コードでは、最大値はroyalty_type and avg_list_priceです。実際にはmaxを選択しません。

私は、このコードは、この出力を生成することが期待:

DATE  BOOK_TITLE Royalty_type Avg_list_price 
    2016-07-20 name1  60%   2 
    2016-07-21 name2  60%   2 
    2016-07-22 name3  60%   2 
+0

どのような出力が必要ですか?日付ごとに1行? –

+0

これはMySQLの "いい"機能です。日付/タイトルごとにmaxを得るには 'group by date、book_title'を追加してください。 –

+0

@RomanPekarこれが望ましい出力であると仮定します。現在の出力はこれを意味するものではありません。 –

答えて

0

あなたが書かれているクエリはgroup byで指定された各グループ内max()を計算します。全体としてmax()が必要な場合は、別の方法が必要です。

SELECT r.*, m.* 
FROM reports r CROSS JOIN 
    (SELECT max(r.royalty_type) as royalty_type, 
      max(r.avg_list_price) as avg_list_price 
     FROM reports 
    ) m; 
+0

もっと教えていただけますか?グループ内でmaxを選択する方法は? 'book_title'でグループ化し、次に' marketplace'でグループ化し、1日以内に 'book_title'と1つの 'marketplace'を選択します。 – user2950593

+0

'group by'の場合、グループをどの順序でグループ化しても問題ありません。グループは(marketplace、book_title、date)の同じ組み合わせを持つすべてのレコードで構成されます。 – Jakumi

関連する問題