Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
В общем задача заключается в том, что бы сложить 2 получасовки и получить значение за час. (im - столбец значений). Буду признателен за помощь.
NS kanal Im Data
3 465 77 2017-01-19 13:00:00
3 465 77 2017-01-19 12:30:00
3 465 77 2017-01-19 12:00:00
3 465 77 2017-01-19 11:30:00
3 465 77 2017-01-19 11:00:00
3 465 79 2017-01-19 10:30:00
3 465 80 2017-01-19 10:00:00
3 465 77 2017-01-19 09:30:00
19 янв 17, 13:59    [20122710]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
miksoft
Member

Откуда:
Сообщений: 38495
Nikol09,

И какой результат должен быть на представленных данных?
19 янв 17, 14:15    [20122797]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
paver
Member

Откуда: Томск
Сообщений: 213
Nikol09,
приджойнить еще одну копию таблицы по условию t2.Data = t1.Data + 30 минут
отфильтровать по t1.Data - круглые часы
в результат вывести t1.lm+t2.lm

Как-то так
19 янв 17, 14:39    [20122987]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20583
SELECT NS, kanal, SUM(Im), MIN(Data)
FROM `table`
GROUP BY /* NS, kanal, */ DATE_FORMAT(Data, '%Y%m%d%H')
19 янв 17, 14:46    [20123029]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
miksoft,

как результат должна получится таблица не с получасовыми значениями, а с часовыми.
19 янв 17, 14:47    [20123035]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
paver,

если можно с кодом и подробнее?
20 янв 17, 11:30    [20126251]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
paver
Member

Откуда: Томск
Сообщений: 213
Nikol09,
тебе же Akina нарисовал вариант с группировкой. Это всяко проще
20 янв 17, 13:03    [20126766]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
paver,

да но у меня не получилось, появляется ошибка с функцией date_format
20 янв 17, 13:53    [20127052]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
paver,

или я просто ошибаюсь в написании....
20 янв 17, 13:55    [20127062]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
paver
Member

Откуда: Томск
Сообщений: 213
Nikol09,
текст запроса и текст ошибки - в студию
20 янв 17, 14:15    [20127150]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
paver,

SELECT NS, kanal, SUM(Im), MIN(Data)

Where (NS = 3) AND (Kanal = 465)
GROUP BY  NS, kanal,  DATE_FORMAT(data, '%Y%m%d%H')


ошибка
'DATE_FORMAT' is not a recognized built-in function name.
20 янв 17, 15:12    [20127572]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20583
Nikol09
ошибка
'DATE_FORMAT' is not a recognized built-in function name.

А у Вас точно MySQL? потому как
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.16-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT DATE_FORMAT(NOW(), '%Y%m%d%H');
+--------------------------------+
| DATE_FORMAT(NOW(), '%Y%m%d%H') |
+--------------------------------+
| 2017012015                     |
+--------------------------------+
1 row in set (0.04 sec)

mysql>
20 янв 17, 15:16    [20127607]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20583
Уж больно сообщение похоже на то, которое производит MS SQL...
20 янв 17, 15:17    [20127615]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
Akina,

Да, видимо я топик перепутал совсем, так в выполняю в ms sql прошу прощения.
20 янв 17, 15:29    [20127683]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Nikol09
Member

Откуда:
Сообщений: 8
Nikol09,

не могли бы направить в нужный раздел?

Модератор: Тема перенесена из форума "MySQL".


Сообщение было отредактировано: 20 янв 17, 20:14
20 янв 17, 15:33    [20127707]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
welter
Member

Откуда:
Сообщений: 38
Nikol09,

какая версия ms sql?
23 янв 17, 15:04    [20135537]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
Nikol09
выполняю в ms sql
Не во всех версиях есть DATE_FORMAT :-)

SELECT NS, kanal, SUM(Im) as Im, CONVERT(DATE, Data) as Date
FROM `table`
GROUP BY NS, kanal, CONVERT(DATE, Data)
23 янв 17, 15:14    [20135612]     Ответить | Цитировать Сообщить модератору
 Re: Сложение данных за определенный промежуток времени  [new]
Ilnur26
Member

Откуда:
Сообщений: 15
Может как-то так:

SELECT NS, kanal, SUM(Im), DatetimeFromParts(DATEPART(year, Data), DATEPART(month, Data), DATEPART(day, Data), DATEPART(HOUR, Data),0,0,0)
FROM Table
GROUP BY NS, kanal, DatetimeFromParts(DATEPART(year, Data), DATEPART(month, Data), DATEPART(day, Data), DATEPART(HOUR, Data),0,0,0)
23 янв 17, 17:22    [20136459]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить