टाइमस्टैम्प अंतराल द्वारा ग्रुप 10 मिनट पोस्टग्रेक्सेल [बंद]


10

मुझे 10 मिनट तक अलग-अलग समय पर समूह बनाने की आवश्यकता है।

मेरे पास यह क्वेरी नीचे है जो मुझे परिणाम सेट देता है:

SELECT timestamp
    FROM table_1, table_2_shape_polygon
    WHERE ST_Within(earthnetworks_geometry_raios, poligono_geometry)
      AND timestamp 
      BETWEEN '2013-04-07 15:30:00' AND '2013-04-07 16:50:00'
      AND type = 0
      AND id_polygon = 2

मेरा परिणाम सेट इस तरह है:

"2013-04-07 15:30:55"
"2013-04-07 15:32:52"
"2013-04-07 15:32:52"
"2013-04-07 15:34:21"
"2013-04-07 15:39:09"
"2013-04-07 16:24:25"
"2013-04-07 16:29:58"
"2013-04-07 16:33:22"
"2013-04-07 16:34:30"
"2013-04-07 16:35:09"
"2013-04-07 16:36:54"
"2013-04-07 16:38:40"
"2013-04-07 16:39:37"
"2013-04-07 16:39:37"
"2013-04-07 16:39:38"
"2013-04-07 16:39:38"
"2013-04-07 16:39:44"
"2013-04-07 16:39:56"
"2013-04-07 16:40:03"
"2013-04-07 16:40:04"
"2013-04-07 16:41:22"
"2013-04-07 16:41:27"
"2013-04-07 16:41:38"
"2013-04-07 16:41:38"
"2013-04-07 16:42:24"
"2013-04-07 16:42:39"
"2013-04-07 16:45:00"
"2013-04-07 16:45:40"
"2013-04-07 16:49:43"

मेरे पास एक अवधि के बीच सभी टाइमस्टैम्प हैं, लेकिन मुझे इसे हर 10 मिनट में समूहित करने की आवश्यकता है और मुझे नहीं पता कि कैसे। मैंने कोशिश की date_truncजिसमें मुझे वह सटीकता नहीं है जो मुझे चाहिए।

पूर्व: के बीच 2013-04-07 15:30:00, 2013-04-07 15:40:00 5 results

मैं यह कैसे कर सकता हूँ?


मैंने यह कोशिश की और यह उम्मीद के मुताबिक काम नहीं किया।

SELECT
    timestamp 'epoch' +
    INTERVAL '1 second' * round((extract('epoch' from earthnetworks_dt_horario) / 600) * 600) as horario,
    count(earthnetworks_dt_horario)
FROM raios.earthnetworks, raios.earthnetworks_teste_poligono
WHERE ST_Within(earthnetworks_geometry_raios, poligono_geometry)
      AND earthnetworks_dt_horario 
      BETWEEN '2013-04-07 15:30:00' AND '2013-04-07 16:50:00'
      AND earthnetworks_num_tipo = 0
      AND id_poligono = 2
GROUP BY 
round(extract('epoch' from earthnetworks_dt_horario) / 600), earthnetworks_dt_horario

यह समूहित नहीं किया गया परिणाम है:

"2013-04-07 16:29:58";1
"2013-04-07 16:34:30";1
"2013-04-07 16:33:22";1
"2013-04-07 16:39:44";1
"2013-04-07 16:39:56";1
"2013-04-07 16:42:24";1
"2013-04-07 16:41:38";2
"2013-04-07 16:24:25";1
"2013-04-07 16:39:38";2
"2013-04-07 16:42:39";1
"2013-04-07 16:41:27";1
"2013-04-07 16:36:54";1
"2013-04-07 16:45:00";1
"2013-04-07 16:40:04";1
"2013-04-07 16:40:03";1
"2013-04-07 15:34:21";1
"2013-04-07 15:30:55";1
"2013-04-07 15:39:09";1
"2013-04-07 16:49:43";1
"2013-04-07 16:45:40";1
"2013-04-07 16:35:09";1
"2013-04-07 16:38:40";1
"2013-04-07 16:39:37";2
"2013-04-07 16:41:22";1
"2013-04-07 15:32:52";2

काम नहीं किया।

जवाबों:


14

आप PostgreSQL के लिए इसका उपयोग कर सकते हैं। 600 सेकंड में 10 मिनट है। विचार टाइमस्टैम्प को युग में परिवर्तित करना है, वांछित अंतराल प्राप्त करने के लिए मिनटों में अंतराल से विभाजित करना

SELECT COUNT(*) cnt, 
to_timestamp(floor((extract('epoch' from timestamp_column) / 600 )) * 600) 
AT TIME ZONE 'UTC' as interval_alias
FROM TABLE_NAME GROUP BY interval_alias

2

आप इस उत्तर का उपयोग 300 को 600 से बदलकर (10 मिनट में सेकंड की संख्या) कर सकते हैं


2

कुछ आसान डेटाटाइम कार्य हैं । सबसे पहले, date_truncप्रत्येक घंटे के साथ टाइमस्टैम्प को डिक्रिप्ट करें , फिर date_partएक अंतराल बनाने के लिए मिनटों के साथ कुछ पूर्णांक विभाजन करें , जिसे पुनर्संयोजित किया जाता है।

SELECT COUNT(*), 
    date_trunc('hour', timestamp) +
    (((date_part('minute', ts)::integer / 10::integer) * 10::integer)
     || ' minutes')::interval AS ten_min_timestamp
FROM sometable_or_joins_or_whatever
GROUP BY ten_min_timestamp;

यह सभी परिस्थितियों के साथ अच्छी तरह से काम करता है, उत्थान किया गया होगा। लेकिन मुझे यकीन नहीं है कि || ' minutes'इसका उपयोग क्यों किया गया है date_part
विशाल शेट्टी

integer || 'minutes'एक अंतराल प्रकार बनाने के लिए उपयोग किया जाता है, उदाहरण के लिए "8 मिनट", जो टाइमस्टैम्प में जोड़ा जाता है।
माइक टी।

1

मैंने टाइमस्टैम्प द्वारा समूहीकरण द्वारा mySql में कुछ ऐसा ही किया - MOD(timestamp, 600)जिसका वापसी मूल्य 10 मिनट (600 सेकंड) के भीतर सभी टाइमस्टैम्प के लिए समान होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.