2015-07-17 3 views
-1

hi iam noob в моих запросах sql. Ниже мои данные установленывычислить процент от значений в таблице mysql и записать процентное значение в другой таблице

+------------+---------+-----------+--+------+--------+ 
| day_id  | hour_id | user_type |id|Charge| mobile | 
+------------+---------+-----------+--+------+--------+ 
| 2015-07-17 |  20 | Overall |1 | 30 |  60 | 
| 2015-07-17 |  20 | Overall |2 | 100 | 100 | 
| 2015-07-17 |  20 | new  |1 | 20 |  30 | 
| 2015-07-17 |  20 | new  |2 | 100 |  60 | 
| 2015-07-17 |  21 | Overall |1 | 10 |  20 | 
| 2015-07-17 |  21 | Overall |2 | 1 |  1 | 
| 2015-07-17 |  21 | New  |1 | 10 |  50 | 
| 2015-07-17 |  21 | New  |2 | 1 |  2 | 
| 2015-07-16 |  20 | Overall |1 | 60 |  30 | 
| 2015-07-16 |  20 | Overall |2 | 50 | 200 | 
| 2015-07-16 |  20 | New  |1 | 40 |  60 | 
| 2015-07-16 |  20 | New  |2 | 140 |  30 | 
| 2015-07-16 |  21 | Overall |1 | 14 |  40 | 
| 2015-07-16 |  21 | Overall |2 | 2 |  1 | 
| 2015-07-16 |  21 | New  |1 | 14 | 100 | 
| 2015-07-16 |  21 | New  |2 | 1 |  4 | 
| 2015-07-15 |  20 | Overall |1 | 60 |  60 | 
| 2015-07-15 |  20 | Overall |2 | 40 |  70 | 
+------------+---------+-----------+--+------+--------+ 

теперь мне нужно написать запрос в оболочке или может быть просто SQL-запрос, так что я может вычислить процент стоимости (отвечает на колонке и мобильный телефон) изменение по сравнению с 2-х дней до значение (в колонке и мобильном телефоне)

т. е. процент изменения стоимости от столбца «заряд» и «мобильный», где day_id = сегодня, т.е. 2015-07-17, user_type = в целом, id = 0 до 1 дня старое значение, т.е. 2015-07-17, из столбца «заряд» и «мобильный», где user_type = в целом, id = 0 процентное изменение должно быть записано в другой таблице, такой как

+------------+---------+-----------+--+------+--------+ 
| day_id  | hour_id | user_type |id|Charge| mobile | 
| Today  |   |   | |Change|Change | 
+------------+---------+-----------+--+------+--------+ 
| 2015-07-17 |  20 | Overall |1 | -100 | 100 | 
| 2015-07-17 |  20 | Overall |2 | 100 | -100 | 
| 2015-07-17 |  20 | new  |1 | -100 |  0 | 
| 2015-07-17 |  20 | new  |2 | 40 | 100 | 
| 2015-07-17 |  21 | Overall |1 | -40 | -100 | 
| 2015-07-17 |  21 | Overall |2 | -100 |  0 | 
| 2015-07-17 |  21 | New  |1 | -40 | -100 | 
| 2015-07-17 |  21 | New  |2 | 0 | -100 | 
+0

Я не понимаю ваш пример. Для 'hour_id = 20, user_type = В целом, id = 1', mobile остался прежним на 60, так почему у вас есть 100% -ное изменение? А Charge изменился с 60 до 30, это должно быть -50%, а не -100%. – Barmar

+0

привет спасибо за комментарий ур. –

+0

привет спасибо за сообщение ур. в 2015-07-16 для 'hour_id = 20, user_type = В целом, id = 1' был равен 60, а мобильному - 30 в 2015-07-17 для' hour_id = 20, user_type = В целом, id = 1, он стал зарядом как 30, а мобильная - 60. То есть, заряд был снижен на 100%, - как мобильный был увеличен на 100% –

ответ

0

Вы можете сделать это с автообъединение:

CREATE TABLE newTable 
SELECT t1.day_id, t1.hour_id, t1.user_type, t1.id, 
     (t1.Charge-t2.Charge)/t2.Charge*100 AS Charge_Change, 
     (t1.mobile-t2.mobile)/t2.mobile*100 AS mobile_Change 
FROM yourTable AS t1 
JOIN yourTable AS t2 ON t1.day_id = DATE_ADD(t2.day_id, INTERVAL 2 DAY) 
    AND t1.hour_id = t2.hour_id AND t1.user_type = t2.user_type 
    AND t1.id = t2.id 
+0

спасибо ..и проверит, работает ли это –

+0

:( –

+0

только что зафиксировал некоторый тип во второй последней строке 't1.user_type - t2.user_type' и изменил его на' t1. user_type = t2.user_type', а также удален t1.id, так как у меня нет столбца id. Используется сценарий: 'SELECT t1.day_id, t1.hour_id, t1.user_type, (t1.Charge-t2.Charge) /t2.Charge*100 А.С. Charge_Change, (t1.mobile-t2.mobile) /t2.mobile*100 КАК mobile_Change ОТ fc_hourly_channel_product_stats AS t1 РЕГИСТРИРУЙТЕСЬ fc_hourly_channel_product_stats AS t2 ВКЛ t1.day_id = DATE_ADD (t2.day_id, интервальный 1 DAY) И t1.hour_id = t2.hour_id И t1.user_type = t2.user_type; ' –

Смежные вопросы