我有这个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
答案 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;