You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言dplyr:按另一表列排序并统计CAR表计数与占比

车辆数据统计排序实现

基础表结构

现有两张业务表:

  • CAR表:存储全量车辆信息,包含可重复的车名字段,表样例如下:
    包含车名列的车辆表,车名可重复出现
  • RANK表:存储不同车名对应的排序优先级配置,表样例如下:
    各车名对应的排名配置表

需求目标

需要完成两个核心处理逻辑:

  • 统计CAR表中每个车名的出现次数,同时计算该车名车辆数占总车辆数的百分比
  • 统计完成后的结果集,需要严格按照RANK表中配置的排名顺序排序
    期望输出的结果样例如下:
    包含各车名对应车辆数、占比的汇总结果表

实现代码(MySQL语法)

实现逻辑分三步:先聚合统计单车名的车辆数,再计算全表总车辆数用于占比换算,最后关联排名表取排序权重完成排序:

SELECT
  c.car_name AS 车名,
  c.cnt AS 车辆数,
  CONCAT(ROUND(c.cnt / total.total_cnt * 100, 2), '%') AS 占比
FROM (
  SELECT car_name, COUNT(*) AS cnt
  FROM CAR
  GROUP BY car_name
) c,
(SELECT COUNT(*) AS total_cnt FROM CAR) total
LEFT JOIN RANK r ON c.car_name = r.car_name
ORDER BY r.rank ASC;

注意:如果使用SQL Server、PostgreSQL等其他数据库,需要把整数除法做显式转换,比如把占比计算部分改成c.cnt * 1.0 / total.total_cnt避免整除丢失精度,字符串拼接函数如果有差异对应调整即可。

内容的提问来源于stack exchange,提问作者Helen Osborne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:15:45