代码之家  ›  专栏  ›  技术社区  ›  axelrod miles

从customer表中选择订单数最高的前三名客户,并从订单表中获得每个客户的总数

  •  0
  • axelrod miles  · 技术社区  · 2 年前

    客户表 Customer table

    订单表 Orders table

    我想从每个客户id(客户id)的订单中选择订单数和总数最高的前3个客户

    我试过这个

    SELECT c.custid, c.name, c.order_count, SUM( o.total ) AS Totalspent 
    FROM customer c INNER JOIN orders o ON c.custid = o.custid GROUP BY c.order_count DESC LIMIT 3
    

    它按照ordercount获取数据和分组,但总数是错误的。如何从每个客户(客户ID)的订单中获得正确的总数,同时根据订单数量选择前三名客户?

    1 回复  |  直到 2 年前
        1
  •  0
  •   Elijah Brandyberry    2 年前

    您还需要按custid(以及您希望在不进行聚集的情况下选择的任何其他列)进行分组。然后按order_count对结果进行排序,以确保所选的3个具有最高的顺序计数。

    SELECT c.custid, c.name, c.order_count, SUM( o.total ) AS Totalspent 
    FROM customer c 
    INNER JOIN orders o ON c.custid = o.custid 
    GROUP BY c.custid, c.name, c.order_count
    ORDER BY c.order_count DESC
    LIMIT 3
    

    希望这能有所帮助!