【发布时间】:2015-03-25 08:41:45
【问题描述】:
我使用下表: [http://sqlfiddle.com/#!4/eb1b79/1]
表公司:
| ID | CNAME | COUNTRY | CLASS |
|----|-------|---------|-------|
| 1 | ABC | Russia | A |
| 2 | DEF | Russia | B |
表格值:
| ID | VALUE1 | VALUE2 | YEAR |
|----|--------|--------|------|
| 1 | 100 | 20 | 2005 |
| 1 | 200 | 40 | 2006 |
| 1 | 400 | 81 | 2007 |
| 1 | 101 | 16 | 2008 |
| 2 | 300 | 22 | 1999 |
| 2 | 900 | 30 | 2001 |
| 2 | 600 | 10 | 2002 |
我想做的是:
- 计算每个公司和年份的 value1/value2,然后计算每个国家和类别的数量公司,他们不在下一个给定年份之间变化更多超过 2%。
- 应给出计算出的金额,占该国家/地区所有公司的百分比 (percentage1) 以及该国家/地区/类别中所有公司的百分比 (percentage2)。
结果应该是:
| COUNTRY | CLASS | AMOUNT | PERCENTAGE1 | PERCENTAGE2 |
|---------|-------|--------|-------------|-------------|
| Russia | A | 3 | 0.75 | 0.428 |
| Russia | B | 0 | 0 | 0.428 |
谁能给我一个方法?
【问题讨论】:
-
百分比的导出规则是什么?是每年的
value1/value2值吗?我可以回答你的问题,但百分比部分不清楚。你能解释更多吗。例如,2005 年 ID 1 的value1/value2是100/20即5,明年的值是200/40又是5,所以根本没有变化。 -
你是绝对正确的。所以 2005 年和 2006 年之间的变化是 0%,而 2006 年和 2007 年之间的变化是 1.23%(2006 年 value1/value2=5 和 2007 年 value1/value2=4.938),所以这几年之间的变化将在 2% 的范围内,应该计算在内。
-
好的,看我的回答。
标签: sql oracle join rows percentage