一道强力SQL题-难难难

稻草鸟人 发布于 2014/05/21 11:42
阅读 564
收藏 1

以下是现有数据结构(数据库MYSQL)

sum plat logTime
60.1 A 2014/4/10
10 B 2014/4/10
447 E 2014/4/11
911 E 2014/4/13
4 F 2014/4/22
期望得到什么样的结果呢,如 下:

sum plat logTime
60.1 A 2014/4/10
0 A 2014/4/11
0 A 2014/4/13
0 A 2014/4/22
10 B 2014/4/10
0 B 2014/4/11
0 B 2014/4/13
0 B 2014/4/22
0 E 2014/4/10
447 E 2014/4/11
911 E 2014/4/13
0 E 2014/4/22
0 F 2014/4/10
0 F 2014/4/11
0 F 2014/4/13
4 F 2014/4/22

您看懂需求了么?好的.....下面是抢答时间~~~


加载中
0
小夭
小夭

select sum(case when a.logTime = b.logTime and a.plat=b.plat and a.sum=b.sum then a.sum  else 0 end) as 'sum',a.plat,b.logTime

from test a  join test b

group by a.plat,b.logTime order by a.plat,b.logTime

0
豆豆熊
豆豆熊
cross jion 不就搞定啦??
稻草鸟人
稻草鸟人
如果你实际操作一下,你会发现,CROSS JOIN的结果不是我想要的结果
0
小洋哥
小洋哥
这能算是难题么? 这不就sql语句分组排序么?这算难题么?
小洋哥
小洋哥
回复 @稻草鸟人 : 肯定确定涩, 肯定没必要把SQL语句都全给你写 了嘛 就比如:比如有条河,我都给你搭了桥,你没必要叫我还要背你,况且你这问题真心也没啥必要我来给你搭桥的。因为,你这个问题算是非常基础的问题了,不好意思哦
稻草鸟人
稻草鸟人
回复 @小洋哥 : 你确定这是我要的答案?
小洋哥
小洋哥
回复 @稻草鸟人 : group by plat 按 plat 分组 order by Sum DESC 按 sum 从高向下排序
稻草鸟人
稻草鸟人
求答案
0
maradona
maradona

select case when sum is null then 0 else sum end as 'sum' ,plat,logTime  from (select plat,logTime from(select plat from table group by plat),(select logTime from table group by table)) t1 left join table t2 on t1.plat=t2.plat and t1.logTime=t2.logTime

搞着玩 有错勿怪

稻草鸟人
稻草鸟人
谢谢兄弟啊,楼上有个兄弟在你之前了
0
文文木
文文木
select max(if(t1.sum=t2.sum,t1.sum,0)) sum,t1.plat,t2.logTime from test t1 CROSS join test t2 GROUP BY t1.plat,t2.logTime ORDER BY t1.plat,t2.logTime
稻草鸟人
稻草鸟人
赞一个,谢谢兄弟,测试过,您的答案也是正确答案,但是之前的兄弟最早给出,您给了另外一种SQL方式,非常感谢。未能给您最佳,所以很抱歉
0
next_start
next_start
select sum(t4.sum2) sum3,t4.plat,t4.logtime2 from(select case t.logtime when t3.logtime2 then t.sum
       else 0 end sum2, t.plat,t3.logtime2 
       from test t,(select t2.logtime logtime2 from test t2 group by t2.logtime) t3
)t4 group by t4.plat,t4.logtime2 order by t4.plat,t4.logtime2;
next_start
next_start
把日期拿出来再和总表连接比较,longtime相等或者plat相等就取sum的值,否则取0.
返回顶部
顶部