2015-11-24 3 views
0

извините за этот плохой заголовок. У меня есть база данных postgreSQL с некоторыми столбцами, одна из которых - k_time (некоторые вещи эпохи) и даже отображение некоторых читаемых результатов. Мне нужно запустить запрос, который преобразует это k_time в timestamp и выбирает конкретную дату.SQL, чтобы суммировать значения после того, как вы их запросили

это запрос, по соображениям безопасности, я переписал другие имена столбцов, не должно иметь отношения

select 
to_timestamp(k_time/1000), 
k_time, 
k_123, 
k_456, 
SUM(789) as 789, 
SUM(111) as 111, 
SUM(aaa) as aaa 
FROM table 
WHERE k_abc = 0 
AND to_timestamp(k_time/1000) BETWEEN '2015-11-22'::DATE AND '2015-11-24'::DATE 
AND k_xyz = 'test' AND k_456 = 'result' 

GROUP BY k_time,k_123,k_456 
ORDER BY k_time,k_123,k_456; 

этот запрос приводит к

как чёрт я могу поместить таблицу внутри здесь? lol: -/не может показать вам мой результат Он исходит от Postico

EDIT: Извините, ребята, я не мог найти время, чтобы обновить это правильно с фактическим содержимым таблицы, которое у меня есть. Моя точка в основном это после того как я запустить этот запрос у меня есть столбец to_timestamp где каждый час этого дня одна строка (то есть, так как таблица SQL агрегирует это так)


2015-11-23 00:00:00+00 1448236800000 K_456 k_xyz 0 4 84 
2015-11-23 00:00:00+00 1448236800000 K_457 k_xyz 0 0 2 
2015-11-23 00:00:00+00 1448236800000 K_458 k_xyz 0 15 263 
2015-11-23 00:00:00+00 1448236800000 K_459 k_xyz 0 0 3 
2015-11-23 00:00:00+00 1448236800000 K_460 k_xyz 0 1 191 
2015-11-23 00:01:00+00 1448244000000 K_456 k_xyz 0 2 260 
2015-11-23 00:01:00+00 1448244000000 K_457 k_xyz 0 1 63 

наконец запрос результат что мне нужно от: Одна строка для всего этого дня containting сумму всех значений в последних трех столбцах

+0

Используйте образец данных [SQLFiddle] (http://sqlfiddle.com) и опубликуйте здесь, каков будет ваш желаемый результат из этого образца данных. Добавьте сюда сгенерированную ссылку. –

+0

Лучше всего удалить ненужные столбцы из вашего запроса. И более полезно видеть исходные данные, чем результат запроса. –

+0

см. Мое последнее редактирование пожалуйста :-) – Obre1

ответ

0

для того, чтобы соответствовать значению в k_time между ними двумя датами, вы, вероятно, нужно отказаться "/ 1000" в вашем sql.

Здесь:

select 
to_timestamp(k_time), 
k_time, 
k_123, 
k_456, 
SUM(789) as 789, 
SUM(111) as 111, 
SUM(aaa) as aaa 
FROM table 
WHERE k_abc = 0 
AND to_timestamp(k_time) BETWEEN '2015-11-22'::DATE AND '2015-11-24'::DATE 
AND k_xyz = 'test' AND k_456 = 'result' 
GROUP BY k_time,k_123,k_456 
ORDER BY k_time,k_123,k_456; 

То, что я сказал, зависит от того, является ли значение в «k_time» сохраняется в секундах или миллисекундах.

  • , если значения в "k_time" являются секунды, то падение "/ 1000"
  • , если значения в "k_time" являются миллисекунды, а затем сохранить "/ 1000"

Пример: дата «2015 -11-12 14:10:51 "в секундах и 1447330251000 в миллисекундах.

+0

спасибо, но не имеет отношения к моему вопросу – Obre1

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