gpt4 book ai didi

mysql - 在一个查询中返回多个选定值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:52 25 4
gpt4 key购买 nike

抱歉标题请原谅我在开发直截了当的标题方面的无知。

此代码/场景只是为了了解我的来源(我不会发布真实代码),我不是要评估此代码或调试,可能存在索引错误等。这是写在这里没有测试。

table 也是在这里制作的,所以如果它们看起来很傻而且没有意义,那你是对的。 但请尽量记住问题是什么,因为它是普遍存在的并且可以应用于现实世界中的任何数据库模式。

问题

我需要计算员工向特定客户销售了多少次,以及退回该客户最后售出的商品。粗体字是有问题的。我不知道如何在不损坏计数部分(卖家销售给多少客户)的情况下创建这一点查询,我尝试使用 Order By 但没有返回我需要的东西。

 SELECT StaffName, Count(SoldToCustomerId)
AS TimesSoldToCustomer, CustomerName, Item FROM CustomerHistory
INNER JOIN Seller ON SoldToCustomerId = CustomerId
GROUP BY SoldToCustomerId;

数据库

CustomerHistory
CustomerId CustomerName PurchasedDate Item
1 John 01/02/2018 Iphone
2 Tom 02/02/2018 Galaxy
3 Peter 03/02/2018 Ps4
1 John 05/02/2018 Xbox One
1 John 06/02/2018 Ps4
1 John 03/02/2018 PC
1 John 07/01/2017 graphic card

Seller
StaffId StaffName SoldToCustomerId
1 James 1
2 Tim 2
..


Ideal result from sql query
StaffName TimesSoldToCustomer CustomerName lastSoldItem
James 5 John Ps4 -- Last Item Sold
Tim 1 Tom Galaxy -- Last Item Sold

最佳答案

顺便说一句,请始终限定您的列引用以明确它们来自哪个表。

我的方法是分两步完成。

  1. 了解卖家向客户销售了多少次,以及最后一次销售的日期
  2. 再次加入历史数据以找出在最新日期售出的商品

它假设没有客户在任何给定日期购买超过一件商品。

而且,根据要求,我试图忽略数据结构非常糟糕;)

(例如,如果某人从多个卖家处购买商品,则此数据模型将失效。因为您无法分辨哪个销售记录对应于哪个卖家。)

SELECT
s.*,
h.customerName,
h.item
FROM
(
SELECT
s.StaffName,
s.CustomerID,
COUNT(*) AS TimesSoldToCustomer,
MAX(h.PurchasedDate) AS LastPurchasedDate
FROM
Seller AS s
INNER JOIN
CustomerHistory AS h
ON s.SoldToCustomerId = h.CustomerId
GROUP BY
s.StaffName,
s.CustomerID
)
AS s
INNER JOIN
CustomerHistory AS h
ON s.SoldToCustomerId = h.CustomerId
AND s.LastPurchasedDate = h.PurchaseDate

关于mysql - 在一个查询中返回多个选定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55246048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com