Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / обработка данных для использования с Excel / 23 сообщений из 23, страница 1 из 1
25.03.2017, 08:44
    #39426902
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Заранее извиняюсь, может не ту ветку выбрал и мне нужно в Excel, но прошу помощи так как не могу разобраться даже с логикой того как должно работать.
Имеется MySQL + Excel (связки настроены, данные выгружаются - здесь все ОК)

Как результат, мне необходимо получить таблицу вот такого вида (см. приложенный файл, картинка 1) сейчас у меня есть данные (месяц, область и значение - подчеркнул зеленым), но отсутствуют (разница между месяцами в абсолютных значениях и в процентном отношении - подчеркнул красным).
Данные выгружаю из MySQL как указано на картинке 2.
В итоге должна получиться диаграмма как на картинке под №3.

Не знаю как сделать - есть ли возможность средствами MySQL сделать дополнительные поля с необходимыми мне рассчетами? или выгружать в Excel и уже в Excele все это дальше обрабатывать используя сводные таблицы. Подскажите может кто-нить сталкивался с такой задачей. Как лучше поступить? Заранее спасибо за помощь.












































):
...
Рейтинг: 0 / 0
25.03.2017, 12:53
    #39426998
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Может хоть ко подскажет возможно ли это сделать при помощи запросов MySQL
...
Рейтинг: 0 / 0
27.03.2017, 15:55
    #39427841
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Неужели никто не сталкивался?
...
Рейтинг: 0 / 0
27.03.2017, 16:00
    #39427848
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Да не лечим мы по фотографиям, не лечим... давай нормально постановку задачи (структура, наполнение, логика, желаемый результат) - тогда будет предмет для разговора.
...
Рейтинг: 0 / 0
27.03.2017, 21:53
    #39428038
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
ok,попробую

Есть таблица rep25o со столбцами id->int->AI, daterep->datetime, division->int, milohr->int

В таблицу помещаются отчетные данные, за определенный период
daterep 2017-01-01 (январь)
division 1 (1-ый отдел)
milohr 45

daterep 2017-01-01 (январь)
division 2 (2-ой отдел)
milohr 45

daterep 2017-02-01 (февраль)
division 1 (1-ый отдел)
milohr 38

daterep 2017-02-01 (февраль)
division 1 (2-ой отдел)
milohr 38

daterep 2017-03-01 (март)
division 1 (1-ый отдел)
milohr 78

daterep 2017-03-01 (март)
division 2 (2-ой отдел)
milohr 65

Мне необходимо получить разницу по месяцам по каждому отделу в абсолютном значении и в процентах:

разница между январем и февралем milohr в отделе 1 составляет -3; разница между январем и февралем milohr в отделе 1 составляет -3%

Как-то так..... надеюсь понятно.
В принципе я не знаю как сравнить строки т.к. в базу помещается инф. сразу по 10 отделам, за 1 месяц...... может еще какой-нить столбец добавить?
...
Рейтинг: 0 / 0
27.03.2017, 22:31
    #39428060
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
BornЕсть таблицаВ виде CREATE TABLE

BornВ таблицу помещаютсяВ виде INSERT .. SELECT или INSERT .. VALUES.

BornМне необходимо получитьСначала результат. На именно этих данных. Потом исчерпывающее объяснение логики его формирования.
...
Рейтинг: 0 / 0
28.03.2017, 02:32
    #39428119
biwed.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Born,

Добрый день.

На Mysql конечно можно написать такой запрос, но лучше этого не делать. Смотри в сторону Power Pivot (расширение Excel). Там можно задавать лаги используя язык DAX. Табличка не много видоизменится, будет даже лучше для понимания.

PS. Объем данных на обычной машине можно вытянуть пару лямов строк и работать будет все быстро. Работа схожа с работой со сводными таблицами.

С уважением,
biwed.ru
...
Рейтинг: 0 / 0
28.03.2017, 14:10
    #39428432
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Вот структура таблицы
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
mysql> describe rep25o
    -> ;
+--------------+----------+------+-----+---------+----------------+
| Field        | Type     | Null | Key | Default | Extra          |
+--------------+----------+------+-----+---------+----------------+
| id           | int(11)  | NO   | PRI | NULL    | auto_increment |
| daterep      | datetime | NO   |     | NULL    |                |
| milohr       | int(11)  | NO   |     | NULL    |                |
| vohr         | int(11)  | NO   |     | NULL    |                |
| storohr      | int(11)  | NO   |     | NULL    |                |
| smeshohr     | int(11)  | NO   |     | NULL    |                |
| komboohr     | int(11)  | NO   |     | NULL    |                |
| objpcn       | int(11)  | NO   |     | NULL    |                |
| torgpcn      | int(11)  | NO   |     | NULL    |                |
| bankpcn      | int(11)  | NO   |     | NULL    |                |
| homepcn      | int(11)  | NO   |     | NULL    |                |
| freekeshpcn  | int(11)  | NO   |     | NULL    |                |
| bezreagobj   | int(11)  | NO   |     | NULL    |                |
| bezreagtorg  | int(11)  | NO   |     | NULL    |                |
| bezreagbank  | int(11)  | NO   |     | NULL    |                |
| bezreaghome  | int(11)  | NO   |     | NULL    |                |
| kts100       | int(11)  | NO   |     | NULL    |                |
| kts50        | int(11)  | NO   |     | NULL    |                |
| ktshome      | int(11)  | NO   |     | NULL    |                |
| ktsfreekesh  | int(11)  | NO   |     | NULL    |                |
| watchpcn100  | int(11)  | NO   |     | NULL    |                |
| watchpcn50   | int(11)  | NO   |     | NULL    |                |
| watchpcnhome | int(11)  | NO   |     | NULL    |                |
| division     | int(11)  | NO   |     | NULL    |                |
+--------------+----------+------+-----+---------+----------------+
24 rows in set (0.03 sec)



вот так закидываю в нее данные из Excel
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<?php
header('Content-Type: text/html; charset=utf-8');

$host="localhost";
$user="root";
$password="";
$db="report";
mysql_connect($host, $user, $password) or die("MySQL сервер недоступен!".mysql_error());
mysql_select_db($db) or die("Нет соединения с БД".mysql_error());

$file_name='1.csv';

if ( ($handle_o = fopen($file_name, "r") ) !== FALSE ) {
    // читаем первую строку и разбираем названия полей
    $columns_o = fgetcsv($handle_o, 1000, ";");
    foreach( $columns_o as $v ) {
        $insertColumns[]=addslashes(trim($v));
    }
    $columns=implode(",",$insertColumns);
    while ( ($data_o = fgetcsv($handle_o, 1000, ";")) !== FALSE) {
        $insertValues = array();
        foreach( $data_o as $v ) {
            $insertValues[]="'".addslashes(trim($v))."'";
        }
        $values=implode(',',$insertValues);

        $sql = "INSERT INTO rep25o ($columns) VALUES ($values)";
        mysql_query($sql) or die('SQL ERROR:'.mysql_error());
    }

}
fclose($handle_o);


Вот выборка значений
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
mysql> SELECT id, daterep, division, milohr FROM rep25o WHERE 1;
+----+---------------------+----------+--------+
| id | daterep             | division | milohr |
+----+---------------------+----------+--------+
| 33 | 2017-01-01 00:00:00 |        1 |     44 |
| 34 | 2017-03-01 00:00:00 |        1 |     44 |
| 35 | 2017-01-01 00:00:00 |        2 |     49 |
| 36 | 2017-03-01 00:00:00 |        2 |     53 |
| 37 | 2017-01-01 00:00:00 |        3 |     45 |
| 38 | 2017-03-01 00:00:00 |        3 |     45 |
| 39 | 2017-01-01 00:00:00 |        4 |     50 |
| 40 | 2017-03-01 00:00:00 |        4 |     52 |
| 41 | 2017-01-01 00:00:00 |        5 |     65 |
| 42 | 2017-03-01 00:00:00 |        5 |     67 |
| 43 | 2017-01-01 00:00:00 |        6 |     56 |
| 44 | 2017-03-01 00:00:00 |        6 |     57 |
| 45 | 2017-01-01 00:00:00 |        7 |    118 |
| 46 | 2017-03-01 00:00:00 |        7 |    120 |
| 47 | 2017-01-01 00:00:00 |        8 |     74 |
| 48 | 2017-03-01 00:00:00 |        8 |     74 |
| 49 | 2017-02-01 00:00:00 |        1 |     43 |
| 50 | 2017-02-01 00:00:00 |        2 |     53 |
| 51 | 2017-02-01 00:00:00 |        3 |     45 |
| 52 | 2017-02-01 00:00:00 |        4 |     50 |
| 53 | 2017-02-01 00:00:00 |        5 |     66 |
| 54 | 2017-02-01 00:00:00 |        6 |     57 |
| 55 | 2017-02-01 00:00:00 |        7 |    120 |
| 56 | 2017-02-01 00:00:00 |        8 |     74 |
+----+---------------------+----------+--------+
24 rows in set (0.00 sec)



И далее, мне нужно получить разницу значений milohr (в абсолютных значениях и %), к примеру строки с id 33 и 49 (т.е. разница января с февралем), потом февраль с мартом и т.д. и т.п.
...
Рейтинг: 0 / 0
28.03.2017, 15:03
    #39428491
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Bornмне нужно получить разницу значений milohr (в абсолютных значениях и %), к примеру строки с id 33 и 49 (т.е. разница января с февралем), потом февраль с мартом и т.д. и т.п.Ну если отвлечься от получения исходных данных для расчёта, и полагать их статикой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
CREATE TABLE test (id INT,daterep DATETIME,division INT,milohr INT);

INSERT INTO test (id,daterep,division,milohr)
SELECT 33,'2017-01-01 00:00:00',1,44 UNION ALL
SELECT 34,'2017-03-01 00:00:00',1,44 UNION ALL
SELECT 35,'2017-01-01 00:00:00',2,49 UNION ALL
SELECT 36,'2017-03-01 00:00:00',2,53 UNION ALL
SELECT 37,'2017-01-01 00:00:00',3,45 UNION ALL
SELECT 38,'2017-03-01 00:00:00',3,45 UNION ALL
SELECT 39,'2017-01-01 00:00:00',4,50 UNION ALL
SELECT 40,'2017-03-01 00:00:00',4,52 UNION ALL
SELECT 41,'2017-01-01 00:00:00',5,65 UNION ALL
SELECT 42,'2017-03-01 00:00:00',5,67 UNION ALL
SELECT 43,'2017-01-01 00:00:00',6,56 UNION ALL
SELECT 44,'2017-03-01 00:00:00',6,57 UNION ALL
SELECT 45,'2017-01-01 00:00:00',7,118 UNION ALL
SELECT 46,'2017-03-01 00:00:00',7,120 UNION ALL
SELECT 47,'2017-01-01 00:00:00',8,74 UNION ALL
SELECT 48,'2017-03-01 00:00:00',8,74 UNION ALL
SELECT 49,'2017-02-01 00:00:00',1,43 UNION ALL
SELECT 50,'2017-02-01 00:00:00',2,53 UNION ALL
SELECT 51,'2017-02-01 00:00:00',3,45 UNION ALL
SELECT 52,'2017-02-01 00:00:00',4,50 UNION ALL
SELECT 53,'2017-02-01 00:00:00',5,66 UNION ALL
SELECT 54,'2017-02-01 00:00:00',6,57 UNION ALL
SELECT 55,'2017-02-01 00:00:00',7,120 UNION ALL
SELECT 56,'2017-02-01 00:00:00',8,74;


то далее несложный запрос
Код: sql
1.
2.
3.
4.
5.
SELECT t1.daterep,t1.division,t1.milohr,t2.daterep,t2.milohr
FROM test t1, test t2
WHERE t1.division=t2.division AND t2.daterep = t1.daterep + INTERVAL 1 MONTH
ORDER BY 1,2 -- сортировка для наглядности, при расчётах не нужна
;


даст данные в нужной для расчёта компоновке:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
+---------------------+----------+--------+---------------------+--------+
| daterep             | division | milohr | daterep             | milohr |
+---------------------+----------+--------+---------------------+--------+
| 2017-01-01 00:00:00 |        1 |     44 | 2017-02-01 00:00:00 |     43 |
| 2017-01-01 00:00:00 |        2 |     49 | 2017-02-01 00:00:00 |     53 |
| 2017-01-01 00:00:00 |        3 |     45 | 2017-02-01 00:00:00 |     45 |
| 2017-01-01 00:00:00 |        4 |     50 | 2017-02-01 00:00:00 |     50 |
| 2017-01-01 00:00:00 |        5 |     65 | 2017-02-01 00:00:00 |     66 |
| 2017-01-01 00:00:00 |        6 |     56 | 2017-02-01 00:00:00 |     57 |
| 2017-01-01 00:00:00 |        7 |    118 | 2017-02-01 00:00:00 |    120 |
| 2017-01-01 00:00:00 |        8 |     74 | 2017-02-01 00:00:00 |     74 |
| 2017-02-01 00:00:00 |        1 |     43 | 2017-03-01 00:00:00 |     44 |
| 2017-02-01 00:00:00 |        2 |     53 | 2017-03-01 00:00:00 |     53 |
| 2017-02-01 00:00:00 |        3 |     45 | 2017-03-01 00:00:00 |     45 |
| 2017-02-01 00:00:00 |        4 |     50 | 2017-03-01 00:00:00 |     52 |
| 2017-02-01 00:00:00 |        5 |     66 | 2017-03-01 00:00:00 |     67 |
| 2017-02-01 00:00:00 |        6 |     57 | 2017-03-01 00:00:00 |     57 |
| 2017-02-01 00:00:00 |        7 |    120 | 2017-03-01 00:00:00 |    120 |
| 2017-02-01 00:00:00 |        8 |     74 | 2017-03-01 00:00:00 |     74 |
+---------------------+----------+--------+---------------------+--------+


Останется только посчитать требуемое и обрезать лишнее.
...
Рейтинг: 0 / 0
28.03.2017, 17:17
    #39428635
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Я не совсем понял, Вы предлагаете данные по месяцам хранить в разных таблицах? t1 и t2
А по поводу осталось только посчитать - так я как бы и не знаю как посчитать, как написать ?
...
Рейтинг: 0 / 0
28.03.2017, 17:22
    #39428642
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
А, t2 это типа псевдонима. Сделал получилось. Осталось теперь только посчитать как-то.
...
Рейтинг: 0 / 0
28.03.2017, 17:34
    #39428652
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
О, получилось посчитать, Ок! Теперь нужно как то обрезать лишнее. Домой вернусь выложу запрос, может кому-нить понадобится
...
Рейтинг: 0 / 0
28.03.2017, 20:49
    #39428761
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
вот такой вот запрос получился
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT 
	r1.daterep, 
	r1.division, 
	r1.milohr, 
	r2.daterep, 
	r2.milohr,
    (r2.milohr - r1.milohr) as raznica,
    ((r2.milohr - r1.milohr)/r2.milohr*100) as raznicaproc
FROM 
	rep25o r1, 
	rep25o r2 
WHERE 
	r1.division = r2.division 
	AND r1.daterep + INTERVAL 1 MONTH 
ORDER BY 
	1, 
	2
...
Рейтинг: 0 / 0
28.03.2017, 21:04
    #39428777
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
И вот что получилось

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
+---------------------+----------+--------+---------------------+--------+---------+-------------+
| daterep             | division | milohr | daterep             | milohr | raznica | raznicaproc |
+---------------------+----------+--------+---------------------+--------+---------+-------------+
| 2017-01-01 00:00:00 |        1 |     44 | 2017-01-01 00:00:00 |     44 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        1 |     44 | 2017-02-01 00:00:00 |     43 |      -1 |     -2.3256 |
| 2017-01-01 00:00:00 |        1 |     44 | 2017-03-01 00:00:00 |     44 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        2 |     49 | 2017-03-01 00:00:00 |     53 |       4 |      7.5472 |
| 2017-01-01 00:00:00 |        2 |     49 | 2017-01-01 00:00:00 |     49 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        2 |     49 | 2017-02-01 00:00:00 |     53 |       4 |      7.5472 |
| 2017-01-01 00:00:00 |        3 |     45 | 2017-03-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        3 |     45 | 2017-02-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        3 |     45 | 2017-01-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        4 |     50 | 2017-02-01 00:00:00 |     50 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        4 |     50 | 2017-03-01 00:00:00 |     52 |       2 |      3.8462 |
| 2017-01-01 00:00:00 |        4 |     50 | 2017-01-01 00:00:00 |     50 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        5 |     65 | 2017-03-01 00:00:00 |     67 |       2 |      2.9851 |
| 2017-01-01 00:00:00 |        5 |     65 | 2017-02-01 00:00:00 |     66 |       1 |      1.5152 |
| 2017-01-01 00:00:00 |        5 |     65 | 2017-01-01 00:00:00 |     65 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        6 |     56 | 2017-01-01 00:00:00 |     56 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        6 |     56 | 2017-02-01 00:00:00 |     57 |       1 |      1.7544 |
| 2017-01-01 00:00:00 |        6 |     56 | 2017-03-01 00:00:00 |     57 |       1 |      1.7544 |
| 2017-01-01 00:00:00 |        7 |    118 | 2017-01-01 00:00:00 |    118 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        7 |    118 | 2017-03-01 00:00:00 |    120 |       2 |      1.6667 |
| 2017-01-01 00:00:00 |        7 |    118 | 2017-02-01 00:00:00 |    120 |       2 |      1.6667 |
| 2017-01-01 00:00:00 |        8 |     74 | 2017-01-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        8 |     74 | 2017-02-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        8 |     74 | 2017-03-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        1 |     43 | 2017-03-01 00:00:00 |     44 |       1 |      2.2727 |
| 2017-02-01 00:00:00 |        1 |     43 | 2017-01-01 00:00:00 |     44 |       1 |      2.2727 |
| 2017-02-01 00:00:00 |        1 |     43 | 2017-02-01 00:00:00 |     43 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        2 |     53 | 2017-02-01 00:00:00 |     53 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        2 |     53 | 2017-03-01 00:00:00 |     53 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        2 |     53 | 2017-01-01 00:00:00 |     49 |      -4 |     -8.1633 |
| 2017-02-01 00:00:00 |        3 |     45 | 2017-01-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        3 |     45 | 2017-03-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        3 |     45 | 2017-02-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        4 |     50 | 2017-01-01 00:00:00 |     50 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        4 |     50 | 2017-02-01 00:00:00 |     50 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        4 |     50 | 2017-03-01 00:00:00 |     52 |       2 |      3.8462 |
| 2017-02-01 00:00:00 |        5 |     66 | 2017-02-01 00:00:00 |     66 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        5 |     66 | 2017-01-01 00:00:00 |     65 |      -1 |     -1.5385 |
| 2017-02-01 00:00:00 |        5 |     66 | 2017-03-01 00:00:00 |     67 |       1 |      1.4925 |
| 2017-02-01 00:00:00 |        6 |     57 | 2017-01-01 00:00:00 |     56 |      -1 |     -1.7857 |
| 2017-02-01 00:00:00 |        6 |     57 | 2017-02-01 00:00:00 |     57 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        6 |     57 | 2017-03-01 00:00:00 |     57 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        7 |    120 | 2017-03-01 00:00:00 |    120 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        7 |    120 | 2017-02-01 00:00:00 |    120 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        7 |    120 | 2017-01-01 00:00:00 |    118 |      -2 |     -1.6949 |
| 2017-02-01 00:00:00 |        8 |     74 | 2017-03-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        8 |     74 | 2017-01-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        8 |     74 | 2017-02-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        1 |     44 | 2017-03-01 00:00:00 |     44 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        1 |     44 | 2017-01-01 00:00:00 |     44 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        1 |     44 | 2017-02-01 00:00:00 |     43 |      -1 |     -2.3256 |
| 2017-03-01 00:00:00 |        2 |     53 | 2017-02-01 00:00:00 |     53 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        2 |     53 | 2017-03-01 00:00:00 |     53 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        2 |     53 | 2017-01-01 00:00:00 |     49 |      -4 |     -8.1633 |
| 2017-03-01 00:00:00 |        3 |     45 | 2017-03-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        3 |     45 | 2017-02-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        3 |     45 | 2017-01-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        4 |     52 | 2017-02-01 00:00:00 |     50 |      -2 |     -4.0000 |
| 2017-03-01 00:00:00 |        4 |     52 | 2017-03-01 00:00:00 |     52 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        4 |     52 | 2017-01-01 00:00:00 |     50 |      -2 |     -4.0000 |
| 2017-03-01 00:00:00 |        5 |     67 | 2017-01-01 00:00:00 |     65 |      -2 |     -3.0769 |
| 2017-03-01 00:00:00 |        5 |     67 | 2017-03-01 00:00:00 |     67 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        5 |     67 | 2017-02-01 00:00:00 |     66 |      -1 |     -1.5152 |
| 2017-03-01 00:00:00 |        6 |     57 | 2017-01-01 00:00:00 |     56 |      -1 |     -1.7857 |
| 2017-03-01 00:00:00 |        6 |     57 | 2017-02-01 00:00:00 |     57 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        6 |     57 | 2017-03-01 00:00:00 |     57 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        7 |    120 | 2017-01-01 00:00:00 |    118 |      -2 |     -1.6949 |
| 2017-03-01 00:00:00 |        7 |    120 | 2017-03-01 00:00:00 |    120 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        7 |    120 | 2017-02-01 00:00:00 |    120 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        8 |     74 | 2017-03-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        8 |     74 | 2017-01-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-03-01 00:00:00 |        8 |     74 | 2017-02-01 00:00:00 |     74 |       0 |      0.0000 |
+---------------------+----------+--------+---------------------+--------+---------+-------------+
72 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
28.03.2017, 21:06
    #39428779
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Так, теперь нужно покумекать как работает запрос и почему появляются лишние строки, ну и как-то избавиться от них
...
Рейтинг: 0 / 0
29.03.2017, 07:47
    #39428902
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Bornпочему появляются лишние строкиЕщё бы. У Вас ошибка в запросе, невнимательно перенесли второе условие отбора.
...
Рейтинг: 0 / 0
29.03.2017, 19:52
    #39429518
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Волшебство!!
Вот исправленный запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT 
	r1.daterep, 
	r1.division, 
	r1.milohr, 
	r2.daterep, 
	r2.milohr,
    (r2.milohr - r1.milohr) as raznica,
    ((r2.milohr - r1.milohr)/r2.milohr*100) as raznicaproc
FROM 
	rep25o r1, 
	rep25o r2 
WHERE 
	r1.division = r2.division 
	AND r2.daterep = r1.daterep + INTERVAL 1 MONTH 
ORDER BY 
	1, 
	2




Вот результат!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
+---------------------+----------+--------+---------------------+--------+---------+-------------+
| daterep             | division | milohr | daterep             | milohr | raznica | raznicaproc |
+---------------------+----------+--------+---------------------+--------+---------+-------------+
| 2017-01-01 00:00:00 |        1 |     44 | 2017-02-01 00:00:00 |     43 |      -1 |     -2.3256 |
| 2017-01-01 00:00:00 |        2 |     49 | 2017-02-01 00:00:00 |     53 |       4 |      7.5472 |
| 2017-01-01 00:00:00 |        3 |     45 | 2017-02-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        4 |     50 | 2017-02-01 00:00:00 |     50 |       0 |      0.0000 |
| 2017-01-01 00:00:00 |        5 |     65 | 2017-02-01 00:00:00 |     66 |       1 |      1.5152 |
| 2017-01-01 00:00:00 |        6 |     56 | 2017-02-01 00:00:00 |     57 |       1 |      1.7544 |
| 2017-01-01 00:00:00 |        7 |    118 | 2017-02-01 00:00:00 |    120 |       2 |      1.6667 |
| 2017-01-01 00:00:00 |        8 |     74 | 2017-02-01 00:00:00 |     74 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        1 |     43 | 2017-03-01 00:00:00 |     44 |       1 |      2.2727 |
| 2017-02-01 00:00:00 |        2 |     53 | 2017-03-01 00:00:00 |     53 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        3 |     45 | 2017-03-01 00:00:00 |     45 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        4 |     50 | 2017-03-01 00:00:00 |     52 |       2 |      3.8462 |
| 2017-02-01 00:00:00 |        5 |     66 | 2017-03-01 00:00:00 |     67 |       1 |      1.4925 |
| 2017-02-01 00:00:00 |        6 |     57 | 2017-03-01 00:00:00 |     57 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        7 |    120 | 2017-03-01 00:00:00 |    120 |       0 |      0.0000 |
| 2017-02-01 00:00:00 |        8 |     74 | 2017-03-01 00:00:00 |     74 |       0 |      0.0000 |
+---------------------+----------+--------+---------------------+--------+---------+-------------+
16 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
29.03.2017, 19:53
    #39429520
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Akina, респект и уважение!
Спасибо большое!
...
Рейтинг: 0 / 0
30.03.2017, 14:56
    #39430197
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
А можно ли ещё добавить одну колонку для сравнения значений с январем?
Январь с январем
Февраль с январем
Март с январем
И т.д
...
Рейтинг: 0 / 0
30.03.2017, 20:29
    #39430468
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Ну добавьте ещё одну копию таблицы - чисто с январями.
...
Рейтинг: 0 / 0
31.03.2017, 10:07
    #39430674
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
Копию Таблицы в этом же запросе или это должен быть другой запрос?
...
Рейтинг: 0 / 0
31.03.2017, 11:21
    #39430734
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
В этом же, зачем запросы плодить, если всё равно надо показывать в куче?
...
Рейтинг: 0 / 0
02.04.2017, 18:10
    #39431624
Born
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка данных для использования с Excel
В итоге получился вот такой запрос

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT 
	DATE_FORMAT(r1.daterep,'%d.%m.%Y') as Date, 
	dd.division, 
	r1.milohr, 
	DATE_FORMAT(r2.daterep,'%d.%m.%Y') as Date_2, 
	r2.milohr,
    (r2.milohr - r1.milohr) as raznica,
    ((r2.milohr - r1.milohr)/r2.milohr*100) as raznicaproc,
    r3.milohr as milohrZero,
    (r1.milohr - r3.milohr) as raznicaZero,
    ((r3.milohr - r1.milohr)/r3.milohr*100) as raznicaprocZero
FROM 
	rep25o r1, 
	rep25o r2,
    rep25o r3,
division dd
WHERE 
	r1.division = r2.division
    AND
    r1.division=r3.division
	AND r2.daterep = r1.daterep + INTERVAL 1 MONTH
    AND YEAR(r3.daterep)=YEAR(NOW())AND MONTH(r3.daterep) =1
AND dd.id_main=r1.division
    
ORDER BY 
	r1.daterep,
dd.division



Еще раз огромное спасибо
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / обработка данных для использования с Excel / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]