我有一个查询,我试图运行,不知道如何解决问题,而不是问题。我需要计算一个客户的订单总数,但只显示三月订购的客户。
SELECT customer#, firstname || ', ' || lastname "Customer Name", orderdate,
COUNT(order#)
FROM orders JOIN customers
USING (customer#)
WHERE orderdate LIKE '%MAR%'
GROUP BY customer#;
任何帮助都将不胜感激。
答案 0 :(得分:1)
这里最简单的解决方案可能是将第一个和最后一个客户名称添加到GROUP BY
子句中:
SELECT
customer#,
firstname || ', ' || lastname "Customer Name",
COUNT(order#) AS cnt
FROM orders
JOIN customers
USING (customer#)
WHERE orderdate LIKE '%MAR%'
GROUP BY
customer#,
firstname || ', ' || lastname
您似乎正在使用自然联接,恕我直言,很难看到在联接过程中实际发生的事情。您可能希望在此处切换到使用显式连接语法。
另请注意,严格来说,上述查询不符合ANSI标准,因为它包含GROUP BY
子句中的列函数。这很容易补救;我们可以先使用子查询来连接名字和姓氏,然后再聚合。