2012-09-08 77 views
6

मेरे पास दो क्वेरी हैं, जिनमें से दोनों एक ही "प्लेयर" तालिका से भोजन कर रहे हैं। मैं एक प्रासंगिक प्रतिशत प्राप्त करने के लिए क्वेरी 2 द्वारा क्वेरी 1 को विभाजित करना चाहता हूं। मैं अधिक विस्तृत एसक्यूएल प्रश्नों के साथ अपेक्षाकृत नया हूं, साथ ही फ़ोरम पर पोस्ट कर रहा हूं ... लेकिन अगर आपको प्रासंगिक प्रतिशत परिणाम प्राप्त करने के लिए इसे गठबंधन करने के बारे में कोई सुझाव है तो कृपया मुझे बताएं।एसक्यूएल - दो परिणाम

Select 
    sysdate,sum(Count(init_dtime)) 
From Player p 
Where 
    Trunc(Init_Dtime) > Trunc(Sysdate) - 7 
    And Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
    and trunc(create_dtime) < to_date('2015-sep-9','yyyy-mon-dd') 
Group By Trunc(Init_Dtime) 
Order By Trunc(Init_Dtime) Asc 
Select 
    Sum(Count(Create_Dtime)) 
From Player P 
where 
    Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
    And Trunc(Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd') 
Group By Trunc(create_Dtime) 
Order By Trunc(create_Dtime) Asc 
+1

आप पहले से ही दो जवाब है, जो मुझे आश्चर्य है, क्योंकि मैं डॉन सवाल समझ में नहीं आता है। क्या आप प्रति नंबर एक नंबर या संख्या चाहते हैं? यदि उत्तर आप जो चाहते हैं वह नहीं हैं, तो कृपया प्लेयर तालिका से मूल डेटा सेट पोस्ट करके, अपेक्षित परिणाम सेट और परिवर्तन की व्याख्या करें। –

+0

@ रोब वैन विज्क - स्पष्टता की कमी के लिए खेद है। मैं संयुक्त खिलाड़ियों के लिए एक कुल संख्या प्राप्त करने की कोशिश कर रहा हूं। "प्लेयर" तालिका में बहुत से कॉलम हैं, लेकिन यहां महत्वपूर्ण हैं: 1) "create_dtime" जो वह तारीख है जिसने विशिष्ट खिलाड़ी खाता बनाया है और 2) init d_time जो नवीनतम तारीख है प्लेयर लॉग ऑन है किसी निश्चित दिनांक सीमा के भीतर सभी खिलाड़ियों के लिए, मैं क्वेरी 2 (पिछले 7 दिनों के भीतर सभी सक्रिय खिलाड़ियों को, 3/1/12 के बाद खाता बनाने वाले उपयोगकर्ताओं के लिए) क्वेरी 2 (कुल उपयोगकर्ता जिन्होंने खाता बनाया है) को विभाजित करना चाहते हैं 3/1/12 के बाद) – Americo

उत्तर

4

तुम बस कह सकते हैं

select sysdate, 
     count((init_dtime))/sum((Create_Dtime)) * 100 as percentage 
    from Player p 
where Trunc(Init_Dtime) > Trunc(Sysdate) - 7 
    and Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
    and trunc(create_dtime) < to_date('2015-sep-9','yyyy-mon-dd') 
    order by percentage asc 
SQLs आवश्यक नहीं हैं, जैसा कि आप वास्तव में कुछ के द्वारा समूहीकरण नहीं कर रहे हैं में

group bygroup by उदाहरण के लिए प्लेयर द्वारा प्रतिशत की आवश्यकता होने पर उपयोगी होता है। तो फिर तुम group by player_id कहेंगे और select में player_id होगा: जहां खंड भिन्न हैं, तो :

select player_id, count(…) 
    from … 
where … 
group by player_id 

संपादित

select sysdate, 
     (
      (select count((init_dtime)) 
      from player p 
      where trunc(Init_Dtime) > trunc(Sysdate) - 7 
       and Trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
       and trunc(create_dtime) < to_date('2015-sep-9','yyyy-mon-dd')) 
      /
      (select count((Create_Dtime)) 
       from player P 
      where trunc(Create_Dtime) >= To_Date('2012-mar-01','yyyy-mon-dd') 
       and trunc(Create_Dtime) < To_Date('2015-sep-9','yyyy-mon-dd')) 
     ) * 100 as percentage 
from dual 
+0

उनके पास अलग-अलग 'WHERE' क्लॉज हैं हालांकि –

+0

माइक - बिल्कुल .. हालांकि खिलाड़ी तालिका से ईवेटिंग खिला रहा है, दोनों क्वेरी अलग-अलग मानदंडों पर संरचित हैं .. मैं मैन्युअल रूप से केवल 2 प्रश्नों को ले सकता हूं और उन्हें अपने आप पर विभाजित करें, लेकिन उसमें मजाक कहां है !? मैंने सोचा कि मैं अपने स्वचालन की कोशिश करने और विस्तार करने के लिए इस मंच का उपयोग करना शुरू कर दूंगा। – Americo

+0

@MichaelBerkowski ने यह नहीं देखा था। जवाब अपडेट करेंगे। – Nivas

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^