将Excel公式转换为MySQL查询

时间:2012-06-18 07:17:32

标签: mysql sql excel excel-formula

我回答了问题here:

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

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

两者都完成了工作但是非常慢。我相信我需要使用SQL而不是十万行。

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

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

此时我将有两个表...在vendors表中我可以为每个供应商的产品数添加另一列(如上面链接中所述)和产品表name和vendorID。

问题是这个查询怎么样?查询一个表以使用产品和供应商ID填充另一个表想想我明白然而实际上我需要的计算(每个供应商的匹配产品数量)我完全迷失了。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

假设您填充了两个表:

<强>供应商:

  • IdName

<强>产品:

  • IdVendorIdName ...

然后,为了:

  

计算供应商的相同数量的产品名称。

您应该执行以下操作:

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 Syntax,例如:

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

Edit2:要更新已有供应商列表的现有表,您应该通过将表与结果集相连来更新表

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 

答案 1 :(得分:1)

假设表结构为excel,即一个表:http://sqlfiddle.com/#!2/fb9f3/1

SQL如下:

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