Tuesday, 15 May 2012

mysql - Get sum of delta values per row -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 6 जवाब

    मेरे पास एक मेज है एक समय डेल्टा युक्त क्षेत्र पंक्तियों को अस्थायी क्रम में होने की गारंटी दी जाती है, इसका मतलब है कि आईडी 1 के साथ पंक्ति एक ऐसी घटना को दर्शाती है जो पंक्ति 2 में दर्शायी गई एक से पहले हुई। अब मैं एक क्वेरी करना चाहता हूं जो मुझे प्रत्येक पंक्ति के लिए पूर्ण टाइमस्टैंप देता है।

    उदाहरण डेटा:

      id timestamp_delta 1 0 2 22 3 5 4 10   

    मुझे पहली प्रविष्टि के पूर्ण टाइमस्टैम्प को पता है। मान लीजिए कि यह 100 है। इस प्रकार जिसके परिणामस्वरूप तालिका को मैं एक प्रश्न के साथ बनाना चाहता हूं:

      id timestamp_absolute 1 100 2 122 3 127 4 137   

    सरल लग रहा है, लेकिन मैं इस कार्य के साथ काफी परेशान हूं।

    मैं क्या कर सकता हूँ, तालिका से दो बार से तालिका बनाकर पंक्ति एन -1 का डेल्टा पढ़ा

     < कोड> चुनें * खराबटेबल से t1, खराबटेबल टी 2, जहां t2.id = t1.id-1   

    क्योंकि मैं ऑर्डर पर भरोसा कर सकता हूं। हालांकि मुझे यकीन नहीं है कि यहां से कैसे जाना है क्या किसी भी तरह से प्रत्येक पंक्ति के साथ मूल्य बढ़ाना संभव है? यहां तक ​​कि अगर कोई समाधान ओ (एन 2) रनटाइम व्यवहार में परिणाम की गणना करके प्रत्येक पंक्ति के लिए शुरुआत से योग की गणना करेगा, तो वह स्वीकार्य होगा।

    मुझे लगता है कि यह इस तरह से डेटा को सहेजना नहीं है। डेल्टा का इस्तेमाल करने का कारण यह था कि मोबाइल ऐप (यह मूल्य, भले ही केवल कुछ प्रतिशत की बचत हो) से डेटा की मात्रा को कम करने के लिए, सुविधा के लिए बस इसे सर्वर डीबी के रूप में लिख रहा है।

    मुझे यह देखने के लिए उत्सुक है कि सबसे अच्छा समाधान कितना सरल या जटिल हो रहा है ...

    यदि यह मायने रखता है, तो यह एक MySQL DB है।

    आप ऐसा स्वयं के साथ जुड़ सकते हैं: (मुक्तहंड)

      SELECT t1.id, SUM ( T2.timestamp_delta) badtable t1 से 100 + बुलेटटाइम टी 2 पर टी 2 ऑन टी 2.आईडी & lt; = t1.id ग्रुप बाय टी 1.आईडी    

No comments:

Post a Comment