Sql 两个表上有计数的GroupBy

Sql 两个表上有计数的GroupBy,sql,oracle,join,Sql,Oracle,Join,如果这是一个非常基本的问题,请忽略它,因为我不擅长SQL,必须在google上开发查询,并且无法得到我想要的结果 我有两张桌子 产品 ProductID, ProductName, Descritpion 2010 A xyz 2011 B uyt 2012 C jkj 销售情况如下 Sales SalesID, ProductID, SaleDate, Stat

如果这是一个非常基本的问题,请忽略它,因为我不擅长SQL,必须在google上开发查询,并且无法得到我想要的结果

我有两张桌子

产品

ProductID, ProductName, Descritpion
  2010        A           xyz
  2011        B           uyt
  2012        C           jkj
销售情况如下

Sales
SalesID, ProductID,     SaleDate,      Status
  1        2010        10-Dec-2013       K
  2        2010        10-Dec-2013       u
  3        2011        11-Dec-2013       i
我必须开发一个查询,它将返回每天的销售计数,如下所示

ProductName, TotalSaleCount, SaleDate
    A               2         10-Dec-2013
我提出以下问题

SELECT productid, 
       Count(1) 
FROM   sales 
WHERE  saledate = Trunc(sysdate - 1) 
GROUP  BY productid 
上面的查询返回带有count的productid,但我想要带有count的productname,那么我将如何将sales表与product连接起来


关于

只需加入
产品
表:

SELECT   productname, COUNT(*) 
FROM     Sales 
JOIN     Product ON Sales.productid = Product.producyid
WHERE    saledate = TRUNC(SYSDATE - 1)
GROUP BY ProductName
试试这个:

select t1.PRODUCTNAME,count(t1.PRODUCTNAME) as TotalSaleCount,t2.SALEDATE from Product t1 , Sales t2 
where t1.ProductID = t2.ProductID AND saledate = TRUNC(SYSDATE - 1)
GROUP BY t2.SALEDATE,t1.PRODUCTNAME;

这里有一个与现有答案稍有不同的答案

SELECT Product.ProductName, TotalSales.TotalSaleCount, TotalSales.SaleDate
FROM Product
JOIN (SELECT ProductId, SaleDate, COUNT(*) as TotalSaleCount
      FROM Sales
      GROUP BY ProductId, SaleDate) TotalSales
  ON TotalSales.ProductId = Product.id
结果应与一些现有答案相同。

然而,此版本可能(但不保证)更快-所选列更有可能具有索引,并且也是索引的更好选择
ProductName
通常不适合作为此类索引的开头,而且(取决于优化器的实际智能程度),因为它不属于
Sales
,对优化器的用处较小。

在我提到Sales.productid或product.product.id的分组中?当它抛出以下错误ORA-00918时:列定义不明确00918。00000—“定义模糊的列”分组依据列表应与选择列表相对应。它应该是“
groupbyProductName”
。我修正了我的答案,谢谢你指出了这个问题。我试过了,但结果没有多大改善,我用(ProductId)替换TotalSales.ProductId=ProductId的下面一行,我希望在连接中是
Product\u dot\u Id
,否则它将是交叉连接,这不是你想要的<代码>使用(…)实际上只是常规连接的语法糖,没有理由认为它应该是一种改进。我认为,它也是特定于MySQL的,应该避免使用标准的
ON
条件。