我有一个问题,我想编写一个MySql查询来实现以下结果:
Id | C1 | C2 | Score | Q | CCount | RF |
1 | A | B | 0.25 | 40 | 4 |
2 | A | B | 0.60 | 40 | 4 |
3 | A | C | 0.10 | 20 | 2 |
4 | A | B | 0.90 | 40 | 4 |
5 | A | C | 0.30 | 20 | 2 |
6 | A | B | 0.70 | 40 | 4 |
CCount列是每个组合的总行数,即AB,AC等。 在表格中,上述AB的总计数为4行,而AC的总计数为2行。
我应该使用2张桌子吗?主表和计数表然后,使用group by等将计数结果插回到主表中。如果是这样,我将如何处理它?</ p>
还有另一种方法可以解决我的问题吗?
以下部分,我可以这样做:
我这样做是因为我想计算每一行的RF(相对频率)。
RF = Score * Q/CCount
答案 0 :(得分:0)
我很确定你做错了(因为我看不到整个问题)。
现在刚刚测试过,您可以在查询中执行此操作。
select count(CONCAT(C1,C2)) as count, CONCAT(C1,C2) as name from data group by C1,C2
输出
count combo
4 AB
2 AC
从这里你应该可以得到RF,因为我得到了总数 为简单起见,您现在可以执行第二个查询,遍历行并计算分数。
你可以做一个子查询。但这变得非常棘手。
约翰。