Php 计数数据取决于句子id和数据频率

Php 计数数据取决于句子id和数据频率,php,mysql,sql,Php,Mysql,Sql,我有一张桌子: ========================================================================= | id | stem_before | stem_after | stem_freq | sentence_id | document_id | ========================================================================= | 1 | a

我有一张桌子:

=========================================================================
| id | stem_before | stem_after | stem_freq | sentence_id | document_id | 
=========================================================================
|  1 |     a       |     b      |    1      |   0         |       1     |    
|  2 |     c       |     d      |    1      |   0         |       1     |        
|  3 |     e       |     f      |    1      |   1         |       1     |
|  4 |     g       |     h      |    1      |   2         |       1     |
|  5 |     i       |     j      |    2      |   0         |       2     |
|  6 |     k       |     l      |    1      |   0         |       2     |
=========================================================================
我想分两步数数: 第一步是用每个
句子id
文档id
中的
stem\u freq
的值之和除以1。第二步是将第一步的结果与
stem\u freq

例如:

对于
文档id
=1和
语句id
=0的数据,第一步:
1/(1+1)
=0.5,
id
=1的第二步是
1*0.5
=0.5。对于
id
=2是
1*0.5
=0.5

对于
文档id
=2和
语句id
=0的数据,第一步:
1/(2+1)
=0.3333,
id
=5的第二步是
2*0.3333
=0.6666,
id
=6是
1*0.3333
=0.3333

这是我的密码:

$query = mysql_query ("SELECT sentence_id, document_id, stem_after, 
stem_freq,SUM(stem_freq) as freq 
FROM tb_stemming 
WHERE document_id ='$doc_id' 
GROUP BY(sentence_id)");

while ($row = mysql_fetch_array($query)) {
   $a    = $row['freq'];
   $freq = $row['stem_freq'];
   $tf   = $freq/$a;
}
但它只给出每个不同句子中第一个数据的结果:你能帮我吗。谢谢:)

试试这个:

SELECT
    a.*, 
    a.stem_freq * b.value
FROM
    tb_stemming as a
    JOIN 
    (
        SELECT
            document_id,
            sentence_id,
            1 / sum(stem_freq) 'value'
        FROM
            tb_stemming
        GROUP BY document_id, sentence_id
    ) as b
    ON a.document_id = b.document_id AND a.sentence_id = b.sentence_id

只是一个简短的评论;您不应该在
选择
时删除不在
分组依据中的列。这是一种不好的做法。你能解释一下这句话吗:我想在每个句子中
计算tf
1/stem\u freq
,然后在
之后用
stem\u相乘
stem\u在
之后是表中的一个字符。是否将其相乘?什么是
tf
?计数的公式是什么?@MD.SahibBinMahboob如果我能很好地解释的话,很抱歉
tf
count
只是一个表示我需要的计算的词。请看我上面的计算示例。@igo在您的第一个示例中,count=1/2,这个
2
是从哪里来的?tf=1*count,
1
@MD.SahibBinMahboob 2的来源是来自
stem\u freq
之和,其中
句子id
为0,
文档id
为1。
1
的来源是来自
stem\u freq