SQL 查询 - 计算 SUM 大于当前记录的记录数

SQL Query - Count number of records where SUM is greater than current record

我正在编写一个 SQL 查询来对产品的总销售额求和,我需要一种方法来使用 COUNT 函数来计算 SUM(总销售额)大于当前记录的记录数.


这是我目前的情况:

SELECT product_id, SUM(product_gross_revenue) AS TotalSales, t.name as Category

FROM {prefix}wc_order_product_lookup c

LEFT JOIN wp_posts p ON p.id = c.product_ID

LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID

JOIN wp_term_taxonomy AS tt ON tt.taxonomy = 'product_cat' AND tt.term_taxonomy_id = tr.term_taxonomy_id

JOIN wp_terms AS t ON t.term_id = tt.term_id

WHERE (t.name='Cat A' OR t.name='Cat B' OR t.name='Cat C' OR t.name='Cat D' OR t.name='Cat E') 

GROUP BY product_id
ORDER BY TotalSales DESC


我想在我的 select 语句中添加一个 COUNT 函数来计算 TotalSales 大于当前记录的记录数,但我尝试的所有操作都失败了。


例如,我当前的 table 看起来像这样:

product_id product_gross_revenue name
1 50 Cat A
2 150 Cat B
3 100 Cat C
1 150 Cat A
3 200 Cat C

我希望我想要的输出是:

product_id TotalSales name Count
1 200 Cat A 2
2 150 Cat B 3
3 300 Cat C 1
with data as (<your query minus order by>)
select *,
    (
      select count(*)
      from data d2
      where d2.TotalSales > d1.TotalSales 
    ) as X
from data d1
order by TotalSales desc

如果您的条件变得更复杂,那么子查询将起作用。听起来这也行得通:

rank() over (order by sum(product_gross_revenue)) - 1 as TotalSales