sql中多个商店的价格比较

2024-01-03

create table Products
    (
      id int,
      ProductName varchar(200),
      ProductCategory varchar(200),
      ProductImage varchar(200),
      ProductUri varchar(200),
    )

Insert into Products values(135, 'Product X', 'Digital Camera', Null, Null)
Insert into Products values(136, 'Product Y', 'Mobile', Null, Null)

create table Product_Price
    (
      id int,
      ProductId int,
      dt date,
      SellerName varchar(20),
      Available varchar(20),
      Offer varchar(20),      
      Price money,
      Shipping money
    )

insert into Product_Price values (1, 135,'2012-01-16','Sears','In Stock','30% discount',32.00,2.00)
insert into Product_Price values (2, 135,'2012-01-16','Amazon','In Stock',Null,30.00,NULL)
insert into Product_Price values (3, 135,'2012-01-16','eBay','Just 2 Left',Null,28.00,1.00)

insert into Product_Price values (4, 136,'2012-01-16','Sears','In Stock','30% discount',30.00,6.00)
insert into Product_Price values (5, 136,'2012-01-16','Amazon','In Stock',Null,28.00,4.00)
insert into Product_Price values (6, 136,'2012-01-16','eBay','Out Of stock',Null,Null,Null)

我想要这样的结果:



   ID   ProductName ProductCategory ProductImage    ProductUri  SearsTotal Price(Price+Shipping)    SearsAvailablity    SearsOffer  #Competitors    DifferencePercentage(Sears & others)    AmazonTotal Price(Price+Shipping)   AmazonAvailablity   AmazonOffer eBayTotal Price(Price+Shipping) eBayAvailablity eBayOffer
135 Product X   Digital Camera  NULL    NULL    34  In Stock    30% discount    2   15.25423729 30  In Stock    NULL    29  Just 2 Left NULL
136 Product Y   Mobile  NULL    NULL    36  In Stock    25% discount    1   12.5    32  In Stock    NULL    NULL    Out Of stock    NULL
  

第 1 步在这里:SQL中的产品价格比较 https://stackoverflow.com/questions/19841022/product-price-comparison-in-sql/19842699我的测试在这里:http://sqlfiddle.com/#!3/ec1e7/6 http://sqlfiddle.com/#!3/ec1e7/6


尽管我不确定您想要如何计算 DifferencePercentage 列,但我对此进行了尝试,因此您可能需要仔细查看。

CREATE TABLE #tempProduct
(
    ID INT,
    SellerName VARCHAR(100),
    Total MONEY,
    Availability VARCHAR(100),
    Offer VARCHAR(100),
    Competitors INT
)

INSERT INTO #tempProduct (ID, SellerName, Total, Availability, Offer)
SELECT DISTINCT p.id, pp.SellerName, pp.Price + ISNULL(pp.Shipping,0), pp.Available, pp.Offer
FROM Products p
JOIN Product_Price pp
    ON p.id = pp.ProductId

-- Get Sears competitors
UPDATE tp
SET Competitors = pp.CompetitorCount
FROM #tempProduct tp
JOIN (
        SELECT ProductId, COUNT(sellerName) [CompetitorCount] 
        FROM Product_Price 
        WHERE SellerName <> 'Sears' AND Price + ISNULL(Shipping,0) IS NOT NULL
        GROUP BY ProductId
    ) pp
    ON pp.ProductId = tp.ID
WHERE tp.SellerName = 'Sears'

 SELECT DISTINCT 
    p.id, 
    p.ProductName,
    p.ProductCategory, 
    p.ProductImage, 
    p.ProductUri, 
    stp.Total [SearsTotal], 
    stp.Availability [SearsAvailability], 
    stp.Offer [SearsOffer], 
    stp.Competitors [#Competitors],
    100 - (((ISNULL(etp.Total,0) + ISNULL(atp.Total, 0))/stp.Competitors)/stp.Total) * 100 [DifferencePercentage(Sears & others)], -- Not sure how you want to calculate price difference
    atp.Total, 
    atp.Availability [AmazonTotal], 
    atp.Offer [AmazonOffer], 
    etp.Total [eBayTotal], 
    etp.Availability [eBayAvailability], 
    etp.Offer [eBayOffer]
 FROM Products p
JOIN Product_Price pp
    ON pp.ProductId = p.ID
JOIN #tempProduct stp
    ON stp.ID = p.id
JOIN #tempProduct etp
    ON etp.ID = p.id
JOIN #tempProduct atp
    ON atp.ID = p.id
WHERE stp.SellerName = 'Sears'  
AND etp.SellerName = 'eBay'
AND atp.SellerName = 'Amazon'   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql中多个商店的价格比较 的相关文章

  • SQL查询获取最后两条记录的DateDiff

    我有一个名为 Event 的表 其中 eventNum 作为主键 日期作为 SQL Server 2008 R2 中的 datetime2 7 我试图获取表中最后两行的日期并以分钟为单位获取差异 这就是我目前所拥有的 Select DATE
  • 在bigquery中比较两个表的有效方法

    我有兴趣比较两个表是否包含相同的数据 我可以这样做 standardSQL SELECT key1 key2 FROM SELECT table1 key1 table1 key2 table1 column1 table2 column1
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 在 nhibernate 标准中使用内置的 sql“转换”函数

    我想利用 SQL Server 2008 中的 Convert 函数 以便可以在 DateTime 列上进行搜索 建议的 SQL 看起来像这样 SELECT list of fields FROM aTable WHERE CONVERT
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • Solr 增量导入不起作用

    我使用的是solr 4 2 请注意 完全导入有效 但增量导入却无效 增量导入不会给出任何错误 但不会获取任何更改 这是数据配置文件
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • 从 SQLCE 4 迁移到 SQL Server 2008

    因此 作为早期采用者 我开发了一个基于 SQLCE4 ASP Net MVC3 和实体框架CTP5 http www microsoft com downloads en details aspx FamilyID 35adb688 f8a
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • SQL Server查询麻烦,多对多关系

    不知道如何用一行字来表达这个问题 对标题表示歉意 我的数据库中有3个表 例如 Shop Item 商店库存 Shop 和 Item 具有多对多关系 因此 ShopStock 表将它们链接起来 ShopStock 中的字段是 ID ShopI
  • 如何使用 PHP 从 MSSQL 读取图像字段

    我正在创建一个网站 需要同步从离线 MSSQL 服务器读取的在线 MySQL 数据库 除图像字段外 所有通信和从 MSSQL 读取所有字段均工作正常 我已经使用 PHP 和 Mysql 一段时间了 知道如何向 MySQL 数据库插入 检索图
  • 如何将 SQL 结果存入 STRING 变量?

    我正在尝试获取 C 字符串变量或字符串数 组中的 SQL 结果 是否可以 我需要以某种方式使用 SqlDataReader 吗 我对 C 函数和所有功能非常陌生 曾经在 PHP 中工作 所以如果可以的话请给出一个工作示例 如果相关 我已经可
  • 标记个体内事件发生后发生的日期

    我有一组长格式的数据 每人几行 人 id 其中事件 事件 1 应该只发生一次 事件发生后 该人不应再有任何数据 如果事件发生后出现任何记录 我想使用名为 flag flag 1 的新变量创建一个查询 例如 下面标记了 id 5 因为在该人的
  • Invoke-Sqlcmd 运行脚本两次

    我遇到了一个非常奇怪的问题并且可以重复 基本上 我使用invoke sqlcmd通过使用 inputfile来调用脚本文件 但是如果脚本文件存在一些执行错误 例如插入到列不应为空的表中 则脚本文件将被执行两次 我也可以从探查器中看到这两个执
  • 我不确定在 SQL 中声明这些变量时出了什么问题

    我有以下代码 USE pricingdb go CREATE TABLE dbo Events 060107 2012 Date Time varchar 20 COLLATE SQL Latin1 General CP1 CI AS NU
  • 使用另一个表中的数据查找并替换 MySQL 中的字符串

    我有两个 MySQL 表 我想使用另一个表中的数据查找和替换一个表中的文本字符串 Table texts messages thx guys i think u r great thx again u rock Table dictiona
  • Sql 查询:Sum,表中所有可能的行组合

    SQL Server 2008 R2 表结构示例 create table TempTable ID int identity value int insert into TempTable values 6 insert into Tem
  • SQL:比较不同表中的两个计数

    我有 3 张桌子 一张桌子上有世界上每个国家及其代币 NAME CODE Afghanistan AFG Albania AL Algeria DZ American Samoa AMSA Andorra AND Angola ANG An
  • 打开脚本任务时 SSIS 丢失文件引用

    我们使用自定义审核程序集 C 在脚本任务中记录 SSIS 中的多种操作 我们将在 GAC 中构建自定义程序集 用于运行时 并发布到 IDE VS2008 的公共程序集区域以供设计时文件引用 后构建完成后 自定义程序集可在运行时使用 并可在文
  • 如何找到在SQL Server中注册的程序集?

    我在 SQL Server 中注册了一个程序集 CREATE ASSEMBLY CLRFunctions AUTHORIZATION dbo FROM 0x4D5A90000300000 WITH PERMISSION SET SAFE 我

随机推荐

  • Apache CXF 2.2.7 Spring 3 Web 服务解组错误:意外元素

    我使用 Apache CXF 2 2 7 和 Spring 3 开发了一个简单的 Web 服务应用程序 并将其作为 WAR 文件部署到 Tomcat 上 但收到以下错误消息 2010 年 4 月 12 日 15 56 12 org apac
  • 函数代理 .toString() 错误

    我试图在函数代理上调用 toString 简单地创建一个函数代理并调用 toString 会导致 TypeError Function prototype toString is not generic 将 toString 设置为返回原始
  • 如何取消特定用户的会话?

    我有一个这样的会议 SESSION login 当它等于1 这意味着使用已登录到我的网站 if SESSION login 1 You are logged else login register 我还有另一个包含用户 ID 的会话 像这样
  • Moqui 部署到 Elastic Beanstalk Tomcat 实例上的 AWS

    背景 我们已经使用 Java 环境在 Elastic Beanstalk 上运行带有嵌入式 Jetty 服务器的 Moqui 2 0 大约一年了 出于安全原因 我们让应用程序与 Postgres 数据库一起在私有子网中运行 并通过 VPN
  • Mosquitto套接字读取错误Arduino客户端

    我刚刚从 Github 下载了最新的 Arduino 库代码 它破坏了我的 MQTT 客户端程序 我在 Arduino 上使用 PubSubClient 1 91 在 Mac OSX 上使用 Mosquitto 1 1 2 Build 20
  • data.table 1.8.x Mean() 函数自动删除 NA?

    今天我发现我的程序中存在一个错误 原因是data table自动删除NA for mean 例如 gt a lt data table a c NA NA FALSE FALSE b c 1 1 2 2 gt a gt a list mea
  • 监听短信删除android

    我正在寻找用户从收件箱中删除短信的侦听器 Android 中用于删除短信的任何侦听器 https stackoverflow com questions 5025372 any listener for delete sms in andr
  • 经典 ADO.NET 还在使用吗?

    经典的 ADO NET 是否仍然广泛使用并被许多开发人员用于插入 读取数据等 尽管我们现在有 LINQ 和 EF 是的 在某些情况下仍然使用它 在我的日常工作中 我们有几个使用 SQL 大容量复制的情况 这需要良好的连接和命令 此外 SQL
  • 有没有办法刷新 POSIX 套接字?

    是否有一个标准调用可以将 POSIX 套接字的发送端一直刷新到远程端 或者是否需要将其作为用户级协议的一部分来实现 我查看了常见的标题 但找不到任何东西 设置 TCP NODELAY 然后将其重置回来怎么样 也许可以在发送重要数据之前或完成
  • 使用未知分隔符进行 Unix 排序(最后一列)

    我的数据如下所示 Adelaide Crows 5 2 3 0 450 455 460 67 8 Essendon 5 5 0 0 622 352 955 88 20 Fremantle 5 3 2 0 439 428 598 50 12
  • 使用 ffmpeg 添加不透明度叠加

    我的 ffmpeg 有问题 我尝试在视频上添加 png 文件 我发现如何添加 只是我希望这个 png 文件有一些不透明度 我尝试了这条线 ffmpeg n i video mp4 i logo png filter complex sets
  • 对有连字符的字母数字数据进行排序

    我的工作簿中有两张表 每张表都有自己的电子邮件地址列以及其他数据 我将引用 Sheet1 中的 Column1 和 Sheet2 中的 Column2 其中只有 Column1 可能列出了重复的电子邮件地址 我需要确定 Column1 中的
  • Oracle sql 中“%Type”是什么意思?

    我第一次体验 Oracle 和 TOAD 我知道 SSMS 我在更新过程中的输入参数旁边遇到了这个 Type 但我不知道它是什么或意味着什么 我在 Google 上找到了与 Rowtype 相关的链接 是相同的东西还是完全不同的东西 如果这
  • 在一行中获取 Stream/List 的最后一个元素

    如何在以下代码中获取流或列表的最后一个元素 Where data careas is a List
  • java中的分解,什么时候才够呢?

    我是计算机科学专业一年级的学生 我们目前正在使用 java 进行编程 我经常尝试将程序分解为命名良好的方法 以便我的主方法逻辑可以尽可能接近伪代码地读取 我发现的问题是 我常常最终编写了如此多的小型私有方法 以至于我觉得我可能做得太过了 在
  • 数据建模 3 路表 has_many 关联

    我正在尝试构建一个表来处理某个营销活动已设置为的位置和类别 并具有以下模型关联 class Campaign lt ActiveRecord Base has many campaign category metro bids depend
  • 使用 EL 变量动态地将 ID 分配给标签

    我想循环一些 客人 并动态插入一个id
  • 自引用实体循环依赖仅发生在 EF Core 6.0 上

    描述 我认为这是一个 EF Core 6 0 错误 但我想在向 EF Core GitHub 存储库提交错误之前检查此处 我完全不确定这是否是一个错误 至少我认为这是一种意想不到的行为 在迁移到 NET 6 后 此行为首次出现 我已成功在由
  • 使用 element-ui 和 vue-test-utils 模拟 select

    我正在 Vue 中使用 Jest 和 Element ui 在一个包含带有 2 个选项的选择的组件上进行单元测试 我从下拉列表中选择一个选项 然后检查是否已调用某个操作 1 与正常select and optionHTML 标签效果很好 水
  • sql中多个商店的价格比较

    create table Products id int ProductName varchar 200 ProductCategory varchar 200 ProductImage varchar 200 ProductUri var