见刚才那个进销存问题让大家都不高兴,就出个简单的商业问题活跃活跃气氛,200分奖励第一个回答上来的人 (200分)

  • 主题发起人 主题发起人 Fenix
  • 开始时间 开始时间
F

Fenix

Unregistered / Unconfirmed
GUEST, unregistred user!
商场里卖桔子,苹果和香蕉。
有一天搞促销,从7号到21号内只要哪个顾客累计买桔子,苹果和香蕉各一斤,
22号那天就可以领取奖券一张,累计买各两斤就领取两张奖券,累计买各三斤就领三张奖券,
.....以此类推。

从pos机得到如下销售记录:
某月某日 会员顾客甲 买桔子3斤,苹果半斤
某月某日 会员顾客丙 买苹果2斤
某月某日 会员顾客甲 买香蕉3斤
..........

请问在21号夜晚,商场要准备多少奖券才不会误事?公式是什么?

见刚才大家回答那个进销存问题都不愉快,就出个简单的商业问题活跃活跃气氛,200分奖励第一个。
老规矩:不许灌水。
 
to ydejun:请不要灌水,如果你需要分,可以和版主商量商量,把我的分都给你吧,反正我
极少在这里提问题,分对我来说就是消遣,一点用都没有。
 
select 会员顾客,sum(桔子),sum(苹果),sum(香蕉) from pos机
where 你想要的时间
group by 会员顾客

结果你自己处理吧, 其时一个SQL就可以写了哦。。。。
我只是感觉好好玩哦。。。。
分?不要啦。。。。。
 
to Rzhou:您的答案不太正确,请仔细考虑,注意pos上的数据:
时间 顾客 物品 数量
例子:
7月8日 张三 苹果 3斤
7月8日 张三 桔子 1斤
........
商场里物品太多了,根本不可能一个物品一个字段的,而且物品在不断进出.
 
这不简单,顾客能领的奖券取决于他最少买的商品的数量
select sum(s1,s2,s3中最小的一个) from (
select 会员顾客,sum(桔子) as s1,sum(苹果) as s2,sum(香蕉) as s3 from pos机
where 你想要的时间
group by 会员顾客)


这下大家满意了吧:

select sum(a.s1,b.s2,c.s3中最小的一个) from
(select 会员顾客,sum(数量) as s1 from pos机
where 商品=桔子
group by 会员顾客) a join
(select 会员顾客,sum(数量) as s2 from pos机
where 商品=苹果
group by 会员顾客) b on a.会员顾客=b.会员顾客 join
(select 会员顾客,sum(数量) as s3 from pos机
where 商品=香蕉
group by 会员顾客) c on a.会员顾客=c.会员顾客
 
to ysai:
ysai兄的回答真是直击要害,可惜差点,还是不正确:
请注意,pos机的数据格式:
时间 顾客 物品 数量
例子:
7月8日 张三 苹果 3斤
7月8日 张三 桔子 1斤
7月9日 张三 卫生纸 1袋
7月10日 李四 香蕉 1.5斤
7月10日 张三 牙膏 50克
7月10日 张三 桔子 1斤
..........

只有一个"物品"字段,并没有大家所说的桔子,苹果,香蕉字段。

 
select max(sum(桔子),sum(香蕉),sum(蘋果))
from 表
where 如果 sum(桔子)>1和sum(蘋果)>1和sum(香蕉)>1 才計算
and 日期在XX日和XX日之間
group by 客戶

不知這樣行不行得通,好象沒那麼簡單吧。見笑
 
soonstar兄:
您的答案也是不对的,您的错误和Rzhou,ysai两位大侠一样,pos机的销售记录中没有桔子,苹果,香蕉
等字段,只有一个物品字段,在一份销售记录中这个物品字段的内容可能是任何商品,包括卫生纸
和牙膏等东西.
呵呵,都很接近了,大家努力呀,尽量在我睡觉前看到中国软件业的希望.
 
to Fenix:
你自己的问题可没有说明不是一个FIELD呀。
当然了,你是用DETAIL表。。但是你如果不每天都算,你在21日计算的时候,要
花多少时间?
TO soonstar:
sum(桔子)>1好象不能象你的这样用吧?
 
这下大家满意了吧:

select sum(a.s1,b.s2,c.s3中最小的一个) from
(select 会员顾客,sum(数量) as s1 from pos机
where 商品=桔子
group by 会员顾客) a join
(select 会员顾客,sum(数量) as s2 from pos机
where 商品=苹果
group by 会员顾客) b on a.会员顾客=b.会员顾客 join
(select 会员顾客,sum(数量) as s3 from pos机
where 商品=香蕉
group by 会员顾客) c on a.会员顾客=c.会员顾客
 
如果是一個字段,不能使用等號,你使用like吧。比如 商品 like "%桔子%"
應該就可以了
 
ysai兄应该挺年轻吧,如此身手,果然英雄出少年,此言不虚.
ysai您的答案是对的.只是稍微改进一点:

select a.会员顾客,(a.s1,b.s2,c.s3中最小的一个) from
(select 会员顾客,sum(数量) as s1 from pos机
where 商品=桔子
group by 会员顾客) a join
(select 会员顾客,sum(数量) as s2 from pos机
where 商品=苹果
group by 会员顾客) b on a.会员顾客=b.会员顾客 join
(select 会员顾客,sum(数量) as s3 from pos机
where 商品=香蕉
group by 会员顾客) c on a.会员顾客=c.会员顾客

敢问ysai兄一个深入点的问题:如何不采用子查询和嵌套查询来解决这个问题?因为您也知道
您的这个sql效率可能不是很高.
 
Fenix不食言,就此散分,不过大家可以继续讨论啊,ysai大侠已经成功解决了问题,只是还存在
效率上的问题,大家可以有更好的方案啊,绝对有!
 
后退
顶部