[SQL ] 将值计算再新增到资料表

楼主: KerKerLaugh (科科笑)   2014-07-02 11:25:45
取likes字段数字的第一个字符,分组计算1~9各有几笔
SELECT substring( likes, 1, 1 ) as Leading_Digits, Count( * ) as Actual_Count
FROM movies
GROUP BY substring( likes, 1, 1 )
结果
Leading_Digits Actual_Count
1 30
2 12
3 10
4 13
5 8
6 4
7 8
8 10
9 6
总笔数是101笔
我想在Actual_Count右边再新增一栏名为Expected_Count
Expected_Count 9行的值为101 * 0.301
101 * 0.176
101 * 0.125
101 * 0.097
101 * 0.079
101 * 0.067
101 * 0.058
101 * 0.051
101 * 0.046 的结果
(变量) (固定值)
请问这要怎么新增
另有一张test的资料表包含
Leading_Digits Probability
1 0.301
2 0.176
3 0.123
4 0.097
5 0.079
6 0.067
7 0.058
8 0.051
9 0.046
作者: bohei (run and fall)   2014-07-02 12:13:00
先来厘清一下,新增字段这块跟上面的关联只有101这个值吗?
楼主: KerKerLaugh (科科笑)   2014-07-02 12:17:00
101是movies资料表的总笔数 要用任一资料表的总笔数乘上那9个固定值的结果
作者: bohei (run and fall)   2014-07-02 12:19:00
GROUP BY后的总和为101,其实也就是movies内的总笔数..先ALTER字段,再用UPDATE Expected Count=总笔数*固定值这样应该就符合你的要求了吧?OH..想到..每列的固定值都不一样,这有很多解法用另一个TEMP TABLE先记录PK跟固定值,然后从TEMP这边捞值过去UPDATE不然就在UPDATE里面写CASE每一列的固定值不然就是找出固定值的计算公式,就不必写死每一列的值了
作者: cutekid (可爱小孩子)   2014-07-02 13:11:00
有没有 table 记录 “Leading_Digits”和“固定值”的关系如果没有 table 记录的话,想请问你用的是什么 database
楼主: KerKerLaugh (科科笑)   2014-07-02 13:46:00
我用mysql
作者: cutekid (可爱小孩子)   2014-07-02 13:53:00
leading digits 跟 固定值,有没有另一个 table 做记录??
楼主: KerKerLaugh (科科笑)   2014-07-02 13:59:00
我刚刚新增一个纪录Leading_Digits和固定值的table了
作者: bohei (run and fall)   2014-07-02 15:15:00
expected_count=COUNT(*)*Probability即可上面一句推错了,要推在下面那篇

Links booklink

Contact Us: admin [ a t ] ucptt.com