मेरे पास एक सारणी है जो एक वर्ग 3 डेटाबेस में खेले जाने वाले गेम की एक सूची है। फ़ील्ड "डेटटाइम" गेम समाप्त होने पर एक डेटाटाइम है। फ़ील्ड "अवधि" गेम की अवधि के सेकंड की संख्या है। मैं जानना चाहता हूं कि पिछले 24 घंटों में से किस प्रतिशत में कम से कम 5 गेम चल रहे थे। मैं पता लगा बताने के लिए कई खेल एक निश्चित समय पर चल रहे हैं:स्क्लाइट 3: कार्टेशियन की तारीख
select count(*)
from games
where strftime('%s',datetime)+0 >= 1257173442 and
strftime('%s',datetime)-duration <= 1257173442
अगर मैं एक तालिका कि बस हर दूसरे (या हर 30 सेकंड या कुछ और) मैं एक जानबूझकर cartisian उत्पाद कर सकता है की एक सूची थी इस तरह:
select count(*)
from (
select count(*) as concurrent, d.second
from games g, date d
where strftime('%s',datetime)+0 >= d.second and
strftime('%s',datetime)-duration <= d.second and
d.second >= strftime('%s','now') - 24*60*60 and
d.second <= strftime('%s','now')
group by d.second) x
where concurrent >=5
वहाँ के लिए एक रास्ता मक्खी पर इस तिथि तालिका बनाने के है? या मैं को वास्तव में एक नई तालिका बनाने के बिना इस पर एक समान प्रभाव प्राप्त कर सकता हूं जो कि इस हफ्ते सभी सेकंड की सूची है?
धन्यवाद
संख्या तालिका चाल आम आप पुनरावर्ती CTE/सबक्वेरी फैक्टरिंग का उपयोग करते हैं नहीं कर सकते ... –
हाँ, और संख्या तालिका इस विशेष परिदृश्य की तुलना में अधिक उपयोगी हो जाएगा। आप इसे हमेशा सीमित कर सकते हैं और केवल आपको आवश्यक सबसेट प्राप्त कर सकते हैं: 'नंबर सीमा 100 से संख्या का चयन करें;' यह सिर्फ एक सुविधाजनक निर्माण है ... – cethegeek