मुझे एक सारणी मिली है जो एमएस एसक्यूएल सर्वर में नीचे जैसा है।समूह और अन्य स्थिति पर आईडी द्वारा न्यूनतम और अधिकतम
id | Timestamp | active
-----+-----------+--------
1 | 1:00 | 1
1 | 2:00 | 1
1 | 3:00 | 1
1 | 4:00 | 0
1 | 5:00 | 0
1 | 6:00 | 1
1 | 7:00 | 0
1 | 8:00 | 0
1 | 9:00 | 0
1 | 10:00 | 1
1 | 11:00 | 1
1 | 12:00 | 0
1 | 13:00 | 1
2 | 2:00 | 1
2 | 3:00 | 1
2 | 4:00 | 0
2 | 5:00 | 0
3 | 8:00 | 0
3 | 9:00 | 0
4 | 1:00 | 1
4 | 2:00 | 1
5 | 16:00 | 0
मुझे पता है जब प्रत्येक आईडी कितनी देर के लिए निष्क्रिय (0 सक्रिय =) था क्या अपेक्षाएं हैं। मैंने जो करने की कोशिश की वह सक्रिय = 0 पर आईडी द्वारा समूहित किया गया था, और न्यूनतम और अधिकतम समय पर एक दिनांकित किया गया था। लेकिन इससे मुझे आईडी 1 का नतीजा मिलेगा, जिसमें कहा गया था कि यह 8 घंटे (12:00 - 4:00) @ 12:00 के लिए ऑफ़लाइन था। जब मैं वास्तव में एक प्रश्न पूछता हूं जो मुझे निम्नलिखित परिणाम सेट देगा।
id | approx. offline in hours | at time
---+--------------------------+-----------
1 | 1 | 5:00
1 | 2 | 9:00
1 | 0 | 12:00
2 | 1 | 5:00
3 | 0 | 9:00
5 | 0 | 16:00
गलत क्वेरी मैं शुरू में करने की कोशिश की
SELECT id as [Inactive],
DATEDIFF(hour, MIN(Timestamp), MAX(Timestamp)) as [approx. offline in hours],
MAX(Timestamp) as [at time]
FROM table
WHERE active = 0
GROUP BY [Inactive]
है लेकिन उस क्वेरी के साथ समस्या यह है कि बीच में सक्रिय बार छोड़ देता है। मैं THIS प्रश्न देख रहा हूं जिसे पार्टिशन का उपयोग करके पूछा और उत्तर दिया गया है, लेकिन ऐसा लगता है कि सवाल काफी अलग है और उत्तर इस सवाल के लिए बहुत विशिष्ट है कि मैं इसका एहसास नहीं कर सकता।
किसी भी मदद की सराहना की है।
आप किस rdbms का उपयोग कर रहे हैं? एसक्यूएल-सर्वर, ओरेकल? – Taryn
@bluefeet स्क्वायर ब्रैकेट्स सबसे अधिक संभावना == SQL सर्वर –
@ जोचिम इस्कसन मैं सहमत हूं लेकिन उन्हें यह बता देना चाहिए कि वे किस rdbms का उपयोग कर रहे हैं। – Taryn