MYSQL在一系列值中查找相应的值

时间:2014-11-27 13:52:15

标签: mysql range

我有一个问题,如何找到相应的值......

我有一个像这样的表结构:

(column-names - >其中所有column_headers(第一个除外)包含"范围")

VALUE |  value_level_1  |    value_level_2  |  ...  |  value_level_N  | 

所以表格如下:

VALUE |  0  |  10  |  20  |  50  |  100  |  500  |  1000  |   final_value    |
------------------------------------------------------------------------------
15    |  1  |  0   |  3   |  5   |  0    |  0    |   0    |  = 15 * (1/100)  |    
246   |  2  |  0   |  4   |  0   |  6    |  8    |   0    |  = 246 * (6/100) |
等等......

在第一列中,是一个值(例如价格),其他值是%值..它类似于佣金模式..

我需要做的是找到最高范围(按值),达到的值...并抓住它的百分比值来计算最终列(FINAL_VALUE)...公式在上面的例子......

让它变得困难:)对于第一行,它应该是第3列(10),因为它是达到的高度值(要达到20它需要增加5)..所以SQL应该采取第3列(10)的值(= 0%)......但是!!!如果抓取的值是ZERO,我必须采用先前的值,直到它不是ZERO ...所以我采取第二列(0)....

我想只用SQL做这一切(动态SQL,程序,......没问题)

我不知道......你有什么想法吗?

谢谢

彼得


编辑:

上面的源表(它是通过动态SQL查询计算的)

company_id | value_level  |  commission_value (%)  |  product_id  |
-------------------------------------------------------------------
    1      |     0        |        2               |     15       |
    1      |     0        |        6               |     16       |
    1      |     0        |        3               |     17       |
    1      |     0        |        5               |     18       |
    1      |     0        |        5               |     19       |
    1      |     0        |        9               |     10       |
    1      |     0        |        4               |      9       |
    1      |     0        |        5               |      8       |
    1      |    10        |        7               |     15       |
    1      |    10        |        7               |     16       |
    1      |    10        |        8               |     17       |
    1      |    10        |        8               |     18       |
    1      |    10        |        8               |     19       |
    1      |    10        |        9               |     10       |
    1      |    10        |        4               |      9       |
    1      |    10        |        2               |      8       |

等...所有公司都有大约30k行,它的产品和不同的value_level

使用动态查询我创建PIVOT表 - >

company_id |   product_id  |    0     |     10    |     20    |    50    |
--------------------------------------------------------------------------
    1      |      15       |    2     |      7    |     0     |    0     |
    1      |      16       |    6     |      7    |     0     |    0     |
    1      |      17       |    3     |      8    |     0     |    0     |
    1      |      18       |    5     |      8    |     0     |    0     |
    1      |      19       |    5     |      8    |     0     |    0     |
    1      |      10       |    9     |      9    |     0     |    0     |
    1      |       9       |    4     |      4    |     0     |    0     |
    1      |       8       |    5     |      2    |     0     |    0     |
    2      |      21       |    2     |      0    |     0     |    5     |
    2      |      22       |    2     |      0    |     0     |    6     |
    2      |      23       |    2     |      0    |     0     |    8     |
    2      |      18       |    2     |      0    |     0     |    7     |
    2      |       9       |    2     |      0    |     0     |    3     |
    2      |       8       |    2     |      0    |     0     |    5     |
    2      |       9       |    2     |      0    |     0     |    4     |
等等......

并且在本表中我追加了sales_table的数据......我在哪里有VALUE,我需要附加到范围......正如我上面所说的那样

0 个答案:

没有答案