簡體   English   中英

在子查詢中添加第二個外部查詢

[英]adding a second outer query in a subquery

我在下面有一個查詢,它給了我中位數,我想把我的count(*)放在一個單獨的子查詢中,它計算我在中位數計算中使用的總行數(因為它運行得更好一些)。 最好的方法是什么? 謝謝!

 SELECT our_id, AVG(1.0 * our_val) as Median
FROM
( SELECT our_id, our_val, 
  COUNT(*) OVER (PARTITION BY our_id) AS cnt,
  ROW_NUMBER() OVER (PARTITION BY our_id ORDER BY our_val) AS rn
  FROM our_table
) AS x
WHERE rn IN ((cnt + 1)/2, (cnt + 2)/2) GROUP BY our_id;

您正在計算子查詢中的count(*) 為什么不直接使用它?

SELECT our_id, AVG(1.0 * our_val) as Median, cnt
FROM (SELECT our_id, our_val, 
             COUNT(*) OVER (PARTITION BY our_id) AS cnt,
             ROW_NUMBER() OVER (PARTITION BY our_id ORDER BY our_val) AS rn
      FROM our_table
     ) x
WHERE rn IN ((cnt + 1)/2, (cnt + 2)/2)
GROUP BY our_id, cnt;

暫無
暫無

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

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