【问题标题】:Divide two special value in same column将同一列中的两个特殊值相除
【发布时间】:2020-01-29 14:07:21
【问题描述】:

我想要两个除以一列中的两个值,如下所示:

实际上我想通过呼叫尝试来划分阻塞的呼叫并得出百分比。

我用了下面的代码,答案还可以:

选择 round((cast(100*(select count (event) as EventCount from dbo.['New ST$'] where event = 'Blocked Call') as float)) / (cast((select count (event) as EventCount from dbo.['New ST$'] where event = 'Call Attempt') as float)),3) 作为'BCR(%)'

感谢@GMB

【问题讨论】:

  • 添加文本示例数据而不是图像会很有帮助。另外,到目前为止,您尝试过什么?
  • 请正确标记。 MySQL and SQL- Server 不同。并且不要发布图片。

标签: mysql sql-server


【解决方案1】:

使用内联查询:

SELECT 
    100.00 * (SELECT eventCount FROM mytable WHERE event = 'Blocked Call')
        / (SELECT eventCount FROM mytable WHERE event = 'Call Attempt')

或者使用聚合:

SELECT 
    100.00 * MAX(CASE WHEN event = 'Blocked Call' THEN eventCount END)
        / MAX(CASE WHEN event = 'Call Attempt' THEN eventCount END)
FROM mytable

编辑

您显示的数据似乎已经是聚合查询的结果。您可以通过直接查询初始表来获得预期的结果,例如:

SELECT 
    100.00 * SUM(CASE WHEN event = 'Blocked Call' THEN 1 ELSE 0 END)
        / SUM(CASE WHEN event = 'Call Attempt' THEN 1 ELSE 0 END)
FROM mytable
WHERE event IN ('Blocked Call', 'Call Attempt')

【讨论】:

  • 谢谢,实际上我通过以下代码制作了表格:select distinct (event), count(event) as EventCount from dbo.['New ST$'] group by Event order by 1 所以你的代码不工作,因为它不知道 EventCount
  • @Ebrahim:您首先应该说...好吧,我用一个可以直接在原始表上运行的查询编辑了我的答案(不需要您添加的中间步骤)。
  • @Ebrahim:从您对问题的更新来看,我的回答似乎正确回答了您的问题,如果是这样,请点击绿色复选标志accept it...谢谢!
  • 尊敬的 GMB,是的,非常感谢您的大力支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多