【问题标题】:Write a query to give top 10 customers for EACH DAY编写查询以提供每天排名前 10 位的客户
【发布时间】:2016-02-25 16:38:53
【问题描述】:

我的 customer_table 包含 cust_id、first_name 和 last_name 列,cust_order 表包含 cust_id、order_id、order_date 和 amount 列。如何编写查询以提供每一天的前 10 名客户

;WITH TOP10 AS (
    SELECT *, ROW_NUMBER() 
    OVER (
        PARTITION BY [order_date] 
        ORDER BY [order_date]
    ) AS RowNo 
    FROM [customer_orders]
)
SELECT * FROM TOP10 WHERE RowNo <= 10

上面的代码是我尝试过的,但我无法得到想要的结果,因为我需要每天

的前 10 个订单

【问题讨论】:

  • 顶级客户的定义是什么?靠什么顶?最新订单?数量? order_date 是否包含时间?
  • 我认为order by中需要一些代表订单金额的东西。
  • 您的查询的实际结果是什么?为什么它不是你想要的。 Allso 作为健全性检查:您的输入是否包含多天?
  • 是的输入有多天,其中输出是每天前 10 名。

标签: sql sql-server tsql


【解决方案1】:
WITH TOP10 AS (
    SELECT C.cust_id, C.first_name, O.order_date,O.amount, ROW_NUMBER() 
    over (
        PARTITION BY O.Order_date 
        order by O.Amount desc
    ) AS RowNo 
    FROM [dbo].[customer_table] C  JOIN [dbo].[customer_orders] O on C.Cust_id=O.Cust_id
)
SELECT * FROM TOP10 WHERE RowNo <= 10

成功了

【讨论】:

    猜你喜欢
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多