在mysql中,我要a表关联b表取bsdp_name字段,然后要根据a表中的qtc字段降序排列,效果要和hive的dense_rank一样,最后要返回bsdp_name、qtc、排名列,怎么写
时间: 2024-03-01 11:51:52 浏览: 48
Oracle查询表里的重复数据方法
可以使用以下SQL语句实现:
```
SELECT b.bsdp_name, a.qtc, DENSE_RANK() OVER (ORDER BY a.qtc DESC) AS rank
FROM a
JOIN b ON a.bsdp_id = b.bsdp_id
ORDER BY a.qtc DESC;
```
这里使用了MySQL 8.0及以上版本中的窗口函数DENSE_RANK来实现类似于Hive中的dense_rank的功能,同时使用了JOIN语句对两张表进行关联,再按照a表中的qtc字段降序排列,最后返回bsdp_name、qtc和排名列。注意,如果您的MySQL版本低于8.0,则无法使用窗口函数,需要使用其他方法实现排名功能。
阅读全文