sql视图代码没有选择max

时间:2017-09-16 10:31:31

标签: mysql sql

我有这个sql视图:

SELECT
    `reports`.`date` AS `date`,
    `reports`.`book_title` AS `book_title`,
    max(
        `reports`.`royalty_type`
    ) AS `royalty_type`,
    max(
        `reports`.`avg_list_price`
    ) AS `avg_list_price`
FROM
    `reports`
GROUP BY
    `reports`.`date`,
    `reports`.`book_title`,
    `reports`.`marketplace`

正如您所看到的,它应该从所有royalty_types和所有人中选择最大值 在表中avg_list_prices并设置相应的列值。 但它没有!

在我生成的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的最大值。但实际上它并没有选择最大值。

我希望这段代码产生这个输出:

   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

1 个答案:

答案 0 :(得分:0)

您编写的查询将计算max()指定的每个组中的group by。如果您想要整体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;