有一个名为app的MySQL数据库表,其建表语句如下:
CREATE TABLE `app` (
`app_id` int(10) DEFAULT '0',//应用ID
`version_code` int(10) DEFAULT '0',//应用的版本号
`download_count` int(10) DEFAULT '0'//当前版本的下载量
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
当前表中数据记录如下,一条记录表示某个应用的某个版本的下载量记录:
+--------+--------------+----------------+
| app_id | version_code | download_count |
+--------+--------------+----------------+
| 1 | 10 | 90 |
| 1 | 11 | 100 |
| 1 | 10 | 20 |
| 2 | 15 | 10 |
| 2 | 16 | 15 |
| 2 | 17 | 30 |
| 2 | 16 | 5 |
| 3 | 2 | 50 |
+--------+--------------+----------------+
问: 下面那个MySQL语句可以查出每个应用中总下载量最大的版本号和次数( )?
select t.app_id, t.version_code, max(t.download_sum) from (select app_id, version_code, sum(download_count) download_sum from app
group by app_id, version_code) as t group by t.app_id having t.download_sum > max(t.download_sum);
select t.version_code, max(t.download_sum) from (select app_id, version_code, sum(download_count) download_sum from app
group by app_id, version_code order by download_sum desc) as t group by t.version_code;
select 1.app_id, l.version_code, max(download_sum) from app l inner join (select app_id , version_code, sum(download_count) as
download_sum from app group by app_id, version_code ) as t on l.app_id = t.app_id and l.version_code = t.version_code group by
l.app_id, l.version_code;
select app_id, version_code, download_sum
from (
select app_id, version_code, sum(download_count) as download_sum,
row_number() over(partition by app_id order by sum(download_count) desc) as rn
from app
group by app_id, version_code
) x
where rn = 1;