当前位置: 首页 > 面试题库 >

如何在SQL中执行百分比/总计?

羊舌子瑜
2023-03-14
问题内容

我有一个典型的客户/订单中设置的表,我想显示总 百分比 销售的特定客户负责。我可以像这样获得系统中的订单总数:

SELECT COUNT(order_id) FROM orders

这样我就可以得到客户发出的订单总数:

SELECT COUNT(order_id) FROM orders WHERE cust_id = 541

如何将它们组合成一个查询,以返回特定客户的销售百分比?谢谢!


问题答案:

MySQL:

SELECT ROUND(
  100.0 * (
      SUM(IF(cust_id = 541, 1, 0)) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

编辑

我想如果我注意到 postgres 标签会有所帮助。我认为这是一个MySQL问题。

PostgreSQL:

SELECT ROUND(
  100.0 * (
      SUM(CASE WHEN cust_id = 541 THEN 1 ELSE 0 END) / COUNT(order_id)
  ), 1) AS percent_total
FROM orders;

PS我的PostgreSQL生锈了,所以如果MySQL查询可以在PostgreSQL上运行,我想知道:)

编辑2

我不能承受太大的压力,不能对下面的count(*)建议保持警惕。您通常希望在PostgreSQL中避免这种情况。



 类似资料:
  • 问题内容: 我有这个查询: 它给了我每一行的计数。现在,我想添加第三列,这将给我带来帮助。 我怎样才能做到这一点? 问题答案: 您可以使用子查询来做到这一点: 或带有变量: 在两个示例中,我都将count(*)转换为实数,以避免整数除法类型问题。 希望这对约翰有帮助

  • 问题内容: 我正在使用SQL Server 2008 R2。我需要计算每个组的百分位数值,例如: 例如,给定此DDL(fiddle)- -–我大致希望(在普通百分位数方法的变化范围内)以下内容: 实际的输入集大约有200万行,每个实际的组都有几十到几百(甚至更多)行。 我已经在SO和其他站点上探索了解决方案,但似乎我检查的十几个页面中的解决方案仅适用于计算整个行集而不是行集的每个组/分区的百分位。

  • 如何对字符串进行百分比编码,如RFC 3986中所述?也就是说,我不想(依我看,很奇怪)对www url表单进行编码,因为这是不同的。 如果重要的话,我正在编码的数据不一定是一个完整的URL。

  • 问题内容: 如何在SQL中将其转换为小数?下面是方程式,我的答案是78(整数),但实际答案是78.6(带小数点),因此我需要显示此答案,否则报告将不会达到100% 问题答案: 丑陋,但是行得通。

  • 问题内容: 我有一个带有PHP脚本的站点,此脚本在返回由JavaScript文件访问的数据的内部有一个SQL查询。该数据是一个庞大的航班数据列表,我需要能够在指定的任何给定日期中随机选择(比如说)全部航班的40%。为了论证,让我们这样说: 我知道要获得随机使用的行数,理想情况下我想说,但这行不通。 编辑: 问题答案: 您可以记录所有内容,然后按以下方式计算所需的内容:

  • 问题内容: 我有这些结果: 与表类似: 这些按人分组。现在,我希望添加一列,其中包含根据每个人的总和计算得出的每个人的百分比。 例如:总和为300,因此我需要这样的结果: 我在网上查看了代码,并提出了这样的解决方案: 但是我不确定如何将交叉联接以及已经存在的分组/求和部分合并到联接中。或者这是否完全正确。 任何帮助将不胜感激- SQL小提琴http://sqlfiddle.com/#!9/80f9