使用 SQL 创建查询哪个网格位置在商店中产生最多收入
Posted
技术标签:
【中文标题】使用 SQL 创建查询哪个网格位置在商店中产生最多收入【英文标题】:Using SQL to create a query of what grid location generates the most income in a shop 【发布时间】:2019-12-19 09:50:56 【问题描述】:我是 SQL 和数据库的新手,我已经为商店创建了一个基本数据库。表格是:采购、项目、产品。我正在尝试创建一个查询,该查询将拉回哪个网格的收入最多。我试过下面的代码:
SELECT PRODUCT.LATITUDE
, PRODUCT.LONGITUDE
, SUM(PRICE)"TOTAL"
, PRODUCT.PRODUCT_ID
, PURCHASE.PURCHASE_ID
, ITEM.PURCHASE_ID,
FROM PRODUCT
, PURCHASE
, ITEM,
WHERE PURCHASE.PURCHASE_ID = ITEM.PURCHASE_ID
AND ITEM.PRODUCT_ID = PRODUCT.PRODUCT_ID;
关于如何最好地恢复这些细节的任何提示?
谢谢!
【问题讨论】:
今日提示:始终使用现代、明确的JOIN
语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
这里还需要GROUP BY
。
另一个提示:适当的布局可以防止混淆。此处发布的代码有尾随逗号。我不知道这是否只是您问题的产物,但如果它们在您的实际代码中,则查询将不会运行。
【参考方案1】:
给你:
SELECT PRODUCT.LATITUDE
, PRODUCT.LONGITUDE
, SUM(PRODUCT.PRICE) "TOTAL"
FROM PUCHARSE JOIN ITEM ON PUCHARSE.ID = ITEM.PUCHARSE_ID JOIN PRODUCT ON PRODUCT.ID = ITEM.PRODUCT_ID
GROUP BY
PRODUCT.LATITUDE,
PRODUCT.LONGITUDE
ORDER BY SUM(PRODUCT.PRICE) DESC
NULLS LAST;
假设 PRODUCT 表包含有关商店中的地理位置、价格和表 Purchase 的信息,您只需要 PRODUCT_ID(每个已售出的产品在此表中是单行 - 由此您可以知道历史上已售出的产品数量)。
【讨论】:
好的,谢谢,但是我没有 PRODUCT_ID 存储在 PURCHASE 表中,因为购买可能包含多个产品。加入 3 列的语法是什么,即。购买 > 商品 > 产品 PURCHASE PURCHASE_ID PURCHASE_TIME PURCHASE_DATE 项目 ITEM_ID PURCHASE_ID PRODUCT_ID PRODUCT PRODUCT_ID LATITUDE LONGITUDE PRICE PRICE_RANGE PRODUCT_NAME 我已更改主答案中的代码,请立即检查。以上是关于使用 SQL 创建查询哪个网格位置在商店中产生最多收入的主要内容,如果未能解决你的问题,请参考以下文章