簡體   English   中英

在sql中計算和划分同一表的兩列

[英]count and divide two columns of the same table in sql

我需要獲取ID分別為11和12的記錄數。 然后,我必須按句點將它們分組(即1,2,3,4,5),並將每個ID除以其對應的組。 即(ID數量= 11,期間1)/(ID數量= 12,期間1)

我已經試過了。 但這只是給我一個數。 我如何將它們划分在同一張表中。

范例:

    SELECT COUNT(pNum), SK_MetricDatePeriod , SK_MetricID
FROM
(
   SELECT SK_PatientID as pNum , SK_MetricDatePeriod ,SK_MetricID FROM [IntegratedCare].[report].[MetricValues] WHERE SK_MetricID = 11
   UNION ALL 
   SELECT SK_PatientID ,SK_MetricDatePeriod , SK_MetricID FROM [IntegratedCare].[report].[MetricValues] WHERE SK_MetricID = 12
) t
WHERE pNum IS NOT NULL 
GROUP BY SK_MetricID
     ,SK_MetricDatePeriod
ORDER BY SK_MetricID,SK_MetricDatePeriod;

結果是:

Count  MetricPeriod  MetricID
10199   1   11
10075   2   11
9991    3   11
9891    4   11
8952    5   11
12298   1   12
12130   2   12
12058   3   12
11943   4   12
10860   5   12

如何計算和划分。 在上述查詢中。

結果我看起來像:

 DividedResult MetricPeriod  
    10199   1   
    10075   2   
    9991    3   
    9891    4   
    8952    5   

DivideResult是通過將(周期= 1且度量標准ID = 11的計數值)/(周期= 1且度量標准ID = 12的計數值)相除得到的

擁有計數..避免被0除

   SELECT count(SK_PatientID) as pNum
            , count(case when SK_MetricID = 11 then 0 end) / count(case when SK_MetricID = 12 then 0 end)
            , SK_MetricDatePeriod
   FROM [MetricValues] 
   WHERE SK_MetricID In (11, 12)
   GROUP BY SK_MetricDatePeriod
   Having count(case when SK_MetricID = 12 then 0 end) > 0

沒有一個完整的答案,但它不會讓我發表評論。

將原始查詢選擇到工作表中,然后將pNum除以MetricPeriod = MetricPeriod,會不會更容易

如果您只是尋找每個MetricID的平均值,則可以將每個出現的期間的pnum相加然后除以期間的總數? 只是拋出一些想法,希望這會有所幫助。

在這里我使用了案例陳述,它對我有用

select CompanyCode  ,'Commission Pec',  Year
,sum(case  when CommissionType='Commission Recevied' then JAN else 0 end)/sum(case when CommissionType='Net Payments from WM' and isnull(JAN,0)<>0 then JAN else 1  end) 
 from Commission_Consolidate

 group by CompanyCode,Year

 end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM