解决方案 »
- 重复数据删除问题求解答!!!!
- 求一个sql语句
- Delphi+MySQL执行查询报Commands out of sync; you can't run this command now
- MySQL中的问题'aaaaaa'等于'妹妹美'?
- 在PostgreSQL中,查询30分钟前的数据的SQL怎样写?时间字段为Time
- 执行查询语句时cpu使用问题
- 请问mysql的数据库中,frm,myi,myd各存储的是什么信息?
- mysql 把两个查询结果放一起输入,如何写,用left join行吗
- MySQL结果集是否需要内存问题
- 学习笔记(shell操作mysql增删改查)
- 我现在有2个数据表!结构不同!我想合并成一个!如何操作呢!?
- MYSQL 事务的问题
id(int),=【自动编号】
title(varchar),=【标题】
writer(varchar),=【作者】
content(longtext)=【内容】数据列表如下:
我现用的统计语句如下:
$dsql->Query("Select writer,count(id) as cc From `content` group by writer order by count(writer) desc limit 0,10");
按该语句得到的排名结果如下:
现老师要求,精确到小数后一位数,不知道可不可以实现?即显示的结果如下:
望赐教
但有一点可以肯定:用存储过程肯定可以处理。
没有的可以直接累加,有的话要则个循环判断,如:
instr(writer,',')>0
----------------------------------------------------
1 abc ,张三,
2 cded ,张三,李四,
3 kosoi ,张三,李四,王五,
分数1/3-1/n ?
【content】
id title writer
------------------------------------------------
1 abc ,writer.id[1],
2 cded ,writer.id[1],writer.id[2],
3 kosoi ,writer.id[1],writer.id[2],writer.id[3],【writer】
id name
-----------------------------------
1 张三
2 李四
3 王五是这样吗? 如果作者不好整除,直接每位作者各占一篇也行
1 abc ,张三,
2 cded ,张三,
2 cded 李四,
3 kosoi ,张三,
3 kosoi 李四,
3 kosoi 王五去掉,号
作者记录表:(序号id,文章id,作者名)
----------------------------------------------------
1 abc ,张三,
2 cded ,张三,李四,
3 kosoi ,张三,李四,王五,基于这个测试记录,你的结果是什么?你期望显示什么?建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
----------------------------------------------------
1 abc ,张三,
2 cded ,张三,李四,
3 kosoi ,张三,李四,王五, 也就是以上面为例的话,统计出每位作者所发表的文章数,精确到小数后一位数,不四舍五入计算
想得到的结果如下:发表排名信息
张三 1.8篇
李四 0.8篇
王五 0.3篇
$dsql->Execute('pm');
$word = '';
while($row=$dsql->GetArray('pm')){
$word .= "<li><span>({$row[cc]})</span><a href='/paiming.php#{$row[writer]}' target='_blank'>{$row[writer]}</a></li>";
}
return $word;
我的MYSQL查询语句如上
+------+-------+------------------+
| id | Title | Writer |
+------+-------+------------------+
| 1 | abc | ,张三, |
| 2 | cded | ,张三,李四, |
| 3 | kosoi | ,张三,李四,王五, |
+------+-------+------------------+
3 rows in set (0.00 sec)mysql> select FLOOR(sum(1/(length(Writer)-length(replace(Writer,',',''))-1))*10)
/10 as Cnt
-> from t_uczone
-> where Writer like '%,张三,%';
+--------+
| Cnt |
+--------+
| 1.8000 |
+--------+
1 row in set (0.00 sec)mysql>
mysql> select FLOOR(sum(1/(length(Writer)-length(replace(Writer,',',''))-1))*10)
/10 as Cnt
-> from t_uczone
-> where Writer like '%,李四,%';
+--------+
| Cnt |
+--------+
| 0.8000 |
+--------+
1 row in set (0.00 sec)mysql>
mysql> select FLOOR(sum(1/(length(Writer)-length(replace(Writer,',',''))-1))*10)
/10 as Cnt
-> from t_uczone
-> where Writer like '%,王五,%';
+--------+
| Cnt |
+--------+
| 0.3000 |
+--------+
1 row in set (0.00 sec)mysql>
张三 1.8篇
李四 0.8篇
王五 0.3篇
如果没有另外一张作者表张三
李四
王五则想直接生成你的结构比较麻烦,需要遍历所有记录的 Writer 并拆分出你的作者。这个需要用存储过程,或者在你的程序中实现了。
如果你有这么个表,则可以直接做JOIN查询,