【发布时间】:2016-05-03 14:55:36
【问题描述】:
我有一些看起来像这样的 sql:
SELECT
stageName,
count(*) as `count`
FROM x2production.contact_stages
WHERE FROM_UNIXTIME(createDate) between '2016-05-01' AND DATE_ADD('2016-08-31', INTERVAL 1 DAY)
AND (stageName = 'DI-Whatever' OR stageName = 'DI-Quote' or stageName = 'DI-Meeting')
Group by stageName
Order by field(stageName, 'DI-Quote', 'DI-Meeting', 'DI-Whatever')
这会生成一个如下所示的表格:
+-------------+-------+
| stageName | count |
+-------------+-------+
| DI-quote | 1230 |
| DI-Meeting | 985 |
| DI-Whatever | 325 |
+-------------+-------+
问题:
我想要从一行到下一行的百分比。例如 DI 会议与 DI 报价的百分比。数学将是 100*985/1230 = 80.0%
所以最后表格看起来像这样:
+-------------+-------+------+
| stageName | count | perc |
+-------------+-------+------+
| DI-quote | 1230 | 0 |
| DI-Meeting | 985 | 80.0 |
| DI-Whatever | 325 | 32.9 |
+-------------+-------+------+
有没有办法在 mysql 中做到这一点?
这是一个用于混淆数据的 SQL 小提琴:http://sqlfiddle.com/#!9/61398/1
【问题讨论】:
-
通过 order by 子句或者你有一个唯一的列来指定顺序?
-
@sagi 你的权利,错字已修正。
-
是的,这是非常可行的。再说一次,你已经一个月没来了,所以我会等。
-
@Drew 哦?请告诉:)。
-
当然,将返回这三行的 sqlfiddle 放在一起,我会这样做
标签: mysql