将Excel Forumla转换为MySQL查询

我在这里有一个问题的答案

=SUMPRODUCT(($A$1:$A$10=A1)*($B$1:$B$10=B1)) 

 =COUNTIFS(G:G,G2,H:H,H2) 

但是完成工作却非常缓慢。 我相信我需要用SQL来做这个,而不是十万行。

我想知道的是如何在SQL中完成相同的编号?

我想我可以把我独特的供应商放在一个表中,然后将我的产品插入到一个表中,同时从vendors表中提取我的vendorsID

在这一点上,我将有两个表…在vendors表中,我可以为每个供应商的产品数量(如上面的链接中所述)添加另一列,以及具有产品名称和vendorID的产品表格。

问题是这个查询怎么看? 查询一个表填充产品和供应商ID另一个表认为我明白,但实际上使我需要的计算(每个供应商匹配的产品数量)我完全失去了。

有什么build议么?

假设你已经填充了这两个表:

供应商:

  • IdName

产品介绍:

  • IdVendorIdName

那么,为了:

统计供应商有多less个产品名称是相同的。

你应该这样做:

 SELECT v.Id, v.Name, COUNT(p.Id) AS 'Total Products' FROM Vendors v INNER JOIN Products p ON v.Id = p.VendorId GROUP BY v.Id, v.Name 

编辑:如果你想从这个查询中得到这个结果集到另一个表中,你应该使用INSERT ... SELECT语法 ,就像:

 INSERT INTO NewTable(VendorId, VendorName, ProductsCount) SELECT v.Id, v.Name, COUNT(p.Id) AS 'Total Products' FROM Vendors v INNER JOIN Products p ON v.Id = p.VendorId GROUP BY v.Id, v.Name 

编辑2:要更新已有供应商列表的现有表,应该通过将其与结果集连接来更新表

 UPDATE ExistingTable t INNER JOIN ( SELECT v.Id, v.Name, COUNT(p.Id) AS 'TotalProducts' FROM Vendors v INNER JOIN Products p ON v.Id = p.VendorId GROUP BY v.Id, v.Name ) v ON t.VendorId = v.Id SET t.VendorId = v.Id, t.VendorName = v.Name, t.ProductsCount = v.TotalProducts 

假设表格结构在Excel中即一个表格: http ://sqlfiddle.com/#!2/fb9f3/1

SQL将如下所示:

 SELECT vendor, product, SUM(qty) from tblOrder GROUP BY vendor, product