我目前有一张表格,其中包含SID列出的个别交易价格:
+-----+-----------+
| SID | Item Cost |
+-----+-----------+
| 001 | $1.50 |
| 002 | $2.25 |
| 003 | $3.50 |
| 002 | $5.80 |
| 002 | $1.00 |
| 003 | $20.00 |
+-----+-----------+
我还有一个查询按SID列出交易的查询,其中项目与特定类型(AlaCarte)匹配,并指示每个项目的价格。
SELECT April2013.SID, April2013.Price, MenuItems.MealType
FROM April2013 LEFT JOIN MenuItems ON MenuItems.Item = April2013.Item
WHERE MenuItems.MealType = 'AlaCarte';
我想通过SID列出这些,这样就会有每个SID的列表,并且会对每个SID的所有事务进行总结。
+-----+-------------------------+
| SID | Sum of all Transactions |
+-----+-------------------------+
| 001 | $1.50 |
| 002 | $45.00 |
| 003 | $23.25 |
+-----+-------------------------+
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
除非我遗漏了某些内容,否则您应该可以使用以下内容将汇总函数sum()
应用于GROUP BY
SID
:
SELECT April2013.SID, Sum(April2013.Price) Total
FROM April2013
INNER JOIN MenuItems
ON MenuItems.Item = April2013.Item
WHERE MenuItems.MealType = 'AlaCarte'
GROUP BY April2013.SID;
您会注意到我将您的查询从LEFT JOIN更改为INNER JOIN,因为您在MenuItems的WHERE子句上有一个过滤器。这将仅返回两个表中的匹配行。
如果要返回所有April2013
行,则将LEFT JOIN查询更改为以下内容,将WHERE过滤器移动到JOIN条件。:
SELECT April2013.SID, Sum(April2013.Price) Total
FROM April2013
LEFT JOIN MenuItems
ON MenuItems.Item = April2013.Item
AND MenuItems.MealType = 'AlaCarte'
GROUP BY April2013.SID;