葬空吟 2022-03-09 16:35 采纳率: 61.2%
浏览 54
已结题

关于SQL 数据提取个数的疑问!

使用的是MySQL数据库
原数据格式如下图所示:

img

想算抽检比例,并倒序排列,正常sql语句是:

SELECT `商品名`, `抽检个数`, `库存数量`,
concat( round(((SUM(`抽检个数`)/SUM(`库存数量`)) * 100 ), 3 ), '%' ) AS `抽检比例` 
FROM 表名
GROUP BY `商品名`
ORDER BY  `抽检比例` DESC

现在想取抽检比例低的,要包含所有 抽检比例 为 NULL 的商品,并且包含两个数值最低的商品,应该怎么写?
PS:直接 LIMIT 数量肯定是不行的,表数据是动态的,抽检比例 为 NULL 的商品个数不确定

  • 写回答

2条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-03-09 21:04
    关注

    其实就是取抽检个数为空的和排个序取前2的(nulls last,可是mysql没这个语法,用if和isnull处理成类似效果)

    select * from (
    select t.*,concat(round(抽检个数/库存数量*100,2),'%') 抽检率,
    row_number() over(order by IF(ISNULL(抽检个数),1,0) ,抽检个数/库存数量) rn from t) x
    where 抽检个数 is null or rn<=2
    

    从你发出来的这个样本数据里看,没有出现重复的商品,貌似不需要求和?

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月17日
  • 已采纳回答 3月10日
  • 修改了问题 3月9日
  • 修改了问题 3月9日
  • 展开全部

悬赏问题

  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示