我有一组典型的客户/订单表,我想显示一个特定客户负责的总销售额.我可以这样获得系统中的订单总数:

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;

Edit

我想如果我注意到postgres号标签会有所帮助.我以为这是个问题.

PostgreSQL:

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

另外,我的PostgreSQL已经Rust 了,所以如果MySQL查询可以在PostgreSQL上运行,我想知道:)

Edit 2

我再怎么强调也不足以提防下面的count(*)建议.您通常希望通过PostgreSQL避免这种情况.

Postgresql相关问答推荐

将几个左连接合并为一个

Postgres 13.8 -如何在对数据执行窗口操作时返回所有行

Rust中使用sqlx的多线程postgres操作的惯用方法是什么?

无法从外部连接到在 AWS EC2 实例上运行的 Postgres

使用 Heroku CLI、Postgres 的 SQL 语法错误

如何在 postgresql 中创建一个空的 JSON 对象?

try 访问本地主机中的数据库时如何解决Error: The server does not support SSL connections?

我应该使用哪个 postgresql 包?

PG::TRDeadlockDetected:ERROR: deadlock detected

如何更改几何列的 SRID?

Postgres/psycopg2 - 插入字符串数组

SQL数据库表中的多态性?

datagrip 无法应用更改 此表是只读的

如何确定 NULL 是否包含在 Postgres 的数组中?

在 MAC OS X 10.6 for PostgreSQL 上设置 SHMMAX 等值

是否可以在 CSV 格式的 Postgres COPY 命令中关闭报价处理?

Postgres 数据库文件保存在 ubuntu 中的什么位置?

如何减少存储(缩减)我的 RDS 实例?

IF处或附近的 Postgres 语法错误

用于将布尔列排序为 true、null、false 的 SQL