मुझे पता है कि यह प्रश्न पहले ही 100 बार पूछा जा चुका है और मैंने उन सभी की समीक्षा की लेकिन मैं किंडा अटक गया हूं और मुझे मदद मांगनी पड़ी

मेरे पास इस तरह की टेबल है:

hivenumber Visitdate   CombsNO  WaxNo  BeeBehave
------------------------------------------------
    1      2017-11-10    10       2        4
    2      2017-11-10    11       1        3
    3      2017-11-10    12       3        3
    1      2017-11-12    13       1        1
    3      2017-11-11    14       5        2

सबसे पहले मैं इसे HiveNumber से जोड़ना चाहता हूं

Select HiveNumber 
From tHivesDetails
Group BY HiveNumber

फिर मुझे प्रत्येक HiveNumber के लिए CombNo का अंतिम रिकॉर्ड चाहिए

Select Top(1) CombNo 
From `tHivesDetails` 
Order By VisitDate Desc

फिर मुझे प्रत्येक HiveNumber के लिए Wax का योग चाहिए

Select Sum(Wax) 
From `tHivesDetails` 
Group BY HiveNumber

और अंत में मुझे औसत BeeBehave चाहिए

Select Avg(BeeBehave) 
From tHivesDetails
Group By HiveNumber

मुझे नहीं पता कि इन प्रश्नों को 1 से कैसे जोड़ा जाए और इस मामले में मुझे जो कुछ भी चाहिए, उसके साथ एक टेबल है। मैंने ज्यादातर एक ही प्रश्न पढ़ा लेकिन दुर्भाग्य से यह नहीं समझ पाया कि यह कैसे करें।

मुझे इस तरह का परिणाम चाहिए:

hivenumber  Visitdate  CombsNO  WaxNo  BeeBehave
------------------------------------------------
    1      2017-11-12    13      Sum      avg
    2      2017-11-10    11      sum      avg
    3      2017-11-11    14      sum      avg
0
SaraniO 14 नवम्बर 2017, 02:19

2 जवाब

सबसे बढ़िया उत्तर

बचाव के लिए "विंडो फ़ंक्शंस"। परिणाम के प्रत्येक पंक्ति पर मान उत्पन्न करने के लिए आप over clause के साथ समग्र फ़ंक्शन का उपयोग कर सकते हैं। ROW_NUMBER() क्रम के उपयोग की भी अनुमति देता है, प्रत्येक "विभाजन" के भीतर घटती तारीखों के अनुसार क्रम से करता है, नंबर 1 "सबसे हालिया:" विज़िट (विभाजन के कारण प्रति हाइव) को दिया जाता है।

select *
from (
       Select *
         , row_number() over(partition by HiveNumber order by VisitDate DESC) rn
         , sum(Wax) over(partition by HiveNumber) sum_wax
         , Avg(BeeBehave) over(partition by HiveNumber) avg_bb
       From tHivesDetails
      ) d
where rn = 1
1
Used_By_Already 14 नवम्बर 2017, 02:45

ये कोशिश करें:

SELECT tA.HiveNumber, tA.WaxNoSum, tA.BeeBehaveSum, tB.CombsNoLatest
FROM (SELECT HiveNumber, SUM(WaxNo) AS WaxNoSum, AVG(BeeBehave) AS BeeBehaveSum  
      FROM tHivesDetails
      GROUP BY HiveNumber) AS tA LEFT JOIN (SELECT HiveNumber, MAX(CombsNO) AS CombsNoLatest
                                            FROM tHivesDetails
                                            GROUP BY HiveNumber) AS tB ON tA.HiveNumber = tB.HiveNumber
1
Pat Jones 14 नवम्बर 2017, 03:19