【问题标题】:divide counts in one column where a condition is met在满足条件的一列中除计数
【发布时间】:2022-01-04 14:52:02
【问题描述】:

我正在尝试确定订单的准时交货率:

感兴趣的列是准时交货订单,其中包含字段 0(未准时)或 1(准时)。如何在sql中计算每个人的准时率?基本上计算每个人的 0 / 总计数(0 和 1)的数量?准时也是一样(计数 1/总计数(0 和 1)?

这是一个数据示例:

Week  Delivery on time  Person
1         0              sARAH
1         0              sARAH
1         1              sARAH
2         1              vIC
2         0              Vic

【问题讨论】:

  • 请在此处添加您想要的 exact 输出。如果您当前的示例数据不能传达您需要的内容,请展开示例数据。

标签: count where-clause division


【解决方案1】:

您可以按人汇总,然后取准时统计的平均值:

SELECT Person, AVG(1.0*DeliveryOnTime) AS OnTime,
               AVG(1.0 - DeliveryOnTime) AS NotOnTime
FROM yourTable
GROUP BY Person;

Demo

给出的演示是针对 SQL Server 的,上面的语法可能需要根据您的实际数据库稍作更改,您没有向我们透露。

【讨论】:

  • 感谢您的快速回复。这并没有给出我期望的输出。只有 0 和 1...我希望它计算 ) 的 # 并除以 0 和 1 的总数。因此,对于 sarah 的示例,我们有 3 个条目,2 个零和 1 个一。我希望看到 1/3 = .33 的准时率。我怎样才能得到每个人每周的这个费率?
  • 哦...您的样本数据并没有清楚地表明您希望每人每周。如果是这样,那么只需将查询更改为使用GROUP BY Week, Person,然后将Week 添加到select 子句中。
  • 试过了...它仍然没有给我 0.33 的比率(如上面示例中所述)。我没有捕捉到什么?
猜你喜欢
  • 1970-01-01
  • 2018-09-17
  • 1970-01-01
  • 2019-07-15
  • 2020-01-09
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多