代码之家  ›  专栏  ›  技术社区  ›  Arnaud Martinn

根据订单数量选择行

  •  0
  • Arnaud Martinn  · 技术社区  · 9 年前

    我的桌子 PURCHASES 具有以下列: NAME , ORDER_ID , ITEM_ID .

    当客户订购2个项目时,记录的是同一ORDER_ID和两个相同或不同的ITEM_ID下的2行(取决于客户是否购买了相同的项目)。

    我想选择总共订购了少于3个订单和少于4个项目的所有客户(无论他们是否相同)。以下是当前代码:

    SELECT NAME, COUNT(DISTINCT ORDER_ID) AS number_of_orders, COUNT(ITEM_ID) AS number_of_items
    FROM `PURCHASES`
    WHERE number_of_orders <3
    AND number_of_items <4
    GROUP BY NAME
    ORDER BY number_of_items DESC
    

    我收到以下错误消息: Unknown column 'number_of_orders' in 'where clause'

    2 回复  |  直到 9 年前
        1
  •  0
  •   Prashant    9 年前

    使用此查询

    SELECT NAME, COUNT(DISTINCT ORDER_ID) AS number_of_orders, COUNT(ITEM_ID) AS
    number_of_items
    FROM `PURCHASES`
    GROUP BY NAME
    HAving COUNT(DISTINCT ORDER_ID) <3
    AND COUNT(ITEM_ID) <4
    ORDER BY number_of_items DESC
    
        2
  •  0
  •   Andrey Saleba    9 年前

    您应该使用子查询来执行此操作

    SELECT * FROM (
      SELECT NAME, COUNT(DISTINCT ORDER_ID) AS number_of_orders, COUNT(ITEM_ID)   AS number_of_items)
    FROM `PURCHASES`
    WHERE number_of_orders <3
        AND number_of_items <4
    GROUP BY NAME
    ORDER BY number_of_items DESC