我涉及到两个表,“customers”表和“orders”表。
***“customers”***表具有以下列:
Customerid, companyname, contactname, contactittle, addresses, city
***“订单”***表包含以下列:
orderid, customerid, employeeid, orderdate, shippeddate, shipname
我必须做的是97年订购产品的客户数量在哪里出来。
应该是这样的
Number of clients 20
我试过下面的代码,但我认为它是错误的,原因有以下两个
1-我认为像'%97%'
这样的问题将来可能会导致错误
2-出于某种原因,它需要我的订单数量已经作出,而不是客户的数量
SELECT DISTINCT(COUNT (companyname))as Numero_CLIENTES
FROM customers JOIN orders ON customers.customerid=orders.customerid
WHERE orderdate like '%97%'
2条答案
按热度按时间zvokhttg1#
样本数据:
质询:
deyfvvtc2#
DISTINCT
是关键字,不是函数。您可以使用一个日期范围,并将
DISTINCT
放入聚合中,以便获得不同公司名称的计数:您还可以使用以下任一项:
WHERE EXTRACT(YEAR FROM orderdate) = 1997
WHERE TO_CHAR(orderdate, 'YYYY') = '1997'
它会起作用的但是,在这些情况下,Oracle不会使用
orderdate
列上的任何索引,而需要分别在EXTRACT(YEAR FROM orderdate)
或TO_CHAR(orderdate, 'YYYY')
上使用基于函数的索引。如果使用日期范围,则Oracle可以在orderdate
列上使用索引。