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

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

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












































):
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39426998
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может хоть ко подскажет возможно ли это сделать при помощи запросов MySQL
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39427841
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели никто не сталкивался?
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39427848
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не лечим мы по фотографиям, не лечим... давай нормально постановку задачи (структура, наполнение, логика, желаемый результат) - тогда будет предмет для разговора.
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39428038
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
обработка данных для использования с Excel
    #39428060
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BornЕсть таблицаВ виде CREATE TABLE

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

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

Добрый день.

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

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

С уважением,
biwed.ru
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39428432
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот структура таблицы
Код: 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
обработка данных для использования с Excel
    #39428491
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
обработка данных для использования с Excel
    #39428635
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не совсем понял, Вы предлагаете данные по месяцам хранить в разных таблицах? t1 и t2
А по поводу осталось только посчитать - так я как бы и не знаю как посчитать, как написать ?
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39428642
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, t2 это типа псевдонима. Сделал получилось. Осталось теперь только посчитать как-то.
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39428652
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, получилось посчитать, Ок! Теперь нужно как то обрезать лишнее. Домой вернусь выложу запрос, может кому-нить понадобится
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39428761
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такой вот запрос получился
Код: 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
обработка данных для использования с Excel
    #39428777
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот что получилось

Код: 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
обработка данных для использования с Excel
    #39428779
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, теперь нужно покумекать как работает запрос и почему появляются лишние строки, ну и как-то избавиться от них
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39428902
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bornпочему появляются лишние строкиЕщё бы. У Вас ошибка в запросе, невнимательно перенесли второе условие отбора.
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39429518
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Волшебство!!
Вот исправленный запрос
Код: 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
обработка данных для использования с Excel
    #39429520
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, респект и уважение!
Спасибо большое!
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39430197
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно ли ещё добавить одну колонку для сравнения значений с январем?
Январь с январем
Февраль с январем
Март с январем
И т.д
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39430468
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну добавьте ещё одну копию таблицы - чисто с январями.
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39430674
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копию Таблицы в этом же запросе или это должен быть другой запрос?
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39430734
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом же, зачем запросы плодить, если всё равно надо показывать в куче?
...
Рейтинг: 0 / 0
обработка данных для использования с Excel
    #39431624
Born
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В итоге получился вот такой запрос

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


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