使用 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 创建查询哪个网格位置在商店中产生最多收入的主要内容,如果未能解决你的问题,请参考以下文章

加载商店后如何在网格中设置值? EXTJS3

如何在sql中产生随机的十六进制颜色?

计算每个商店位置sql查询的最小距离

从单个商店动态创建多个 Sencha ExtJS 商店

Navicat保存查询和查询文件放在哪个位置

查看或临时表 - 在 MS SQL Server 中使用哪个?