SQL渣渣回求算法.一个查询排行
SQL渣渣来求算法.一个查询排行.
有t1和t2两表.表结构都一样.字段userid和val都是int型.
每个userid在两表中都有多条记录或者无记录.
现在要做个排行.
userid在t1中的val的总和乘以0.5加上userid在t2中的val的总和乘以0.4..
倒序排列.
大概意思是SUM(t1.val)*0.5 + SUM(t2.val)*0.4 group by userid

SQL太渣.可有理解我意思的神吗...
------解决思路----------------------
------解决思路----------------------
楼上大神是不是忘记写排序部分了。。。
有t1和t2两表.表结构都一样.字段userid和val都是int型.
每个userid在两表中都有多条记录或者无记录.
现在要做个排行.
userid在t1中的val的总和乘以0.5加上userid在t2中的val的总和乘以0.4..
倒序排列.
大概意思是SUM(t1.val)*0.5 + SUM(t2.val)*0.4 group by userid
SQL太渣.可有理解我意思的神吗...
------解决思路----------------------
SELECT ISNULL(a1.userid,a2.userid) userid,
ISNULL(a1.val,0.0)*0.5+ISNULL(a2.val,0.0)*0.4 val
FROM (SELECT userid, SUM(val*1.0) val FROM t1 GROUP BY userid) a1
FULL JOIN (SELECT userid, SUM(val*1.0) val FROM t2 GROUP BY userid) a2
ON a1.userid = a2.userid
------解决思路----------------------
楼上大神是不是忘记写排序部分了。。。
SELECT ISNULL(a1.val,0.0)*0.5+ISNULL(a2.val,0.0)*0.4 val,
ISNULL(a1.userid, a2.userid) userid
FROM
(SELECT userid, SUM(val*1.0) val FROM t1 GROUP BY userid) a1
FULL JOIN
(SELECT userid, SUM(val*1.0) val FROM t2 GROUP BY userid) a2
ON a1.userid = a2.userid
order by 1 desc