首页 新闻 搜索 专区 学院

【999】数据库中用一个字段存放了兴趣爱好,现要进行分类统计。

-1
悬赏园豆:50 [已解决问题] 解决于 2015-05-15 18:01

 如题:数据库中用一个字段存放了兴趣爱好,现要进行分类统计。

 每一个用户的兴趣爱好是直接存放在了用户表中的,而且是用一个字段存放的,

 例如:排鼓,堂鼓(大鼓),葫芦丝,琵琶 。 用逗号分隔。每个用户的兴趣爱好数目不固定。

 现在要统计所有用户的兴趣爱好,并分类计算占比。

 数据库环境:Oracle 11g。

 希望各位能帮忙出出点子!!!

LiGoper的主页 LiGoper | 初学一级 | 园豆:32
提问于:2015-05-08 10:12
< >
分享
最佳答案
-2

如果要方便统计, 这种设计相当狗血。。。

你现在只能用,折分,变成多行数据, 放到临时表, 然后对这个临时表进行分类统计。  写个存储过程吧

收获园豆:43
问天何必 | 老鸟四级 |园豆:3301 | 2015-05-08 11:12

是啊,不忍吐槽。

我想办法拆分出来

LiGoper | 园豆:32 (初学一级) | 2015-05-08 11:15
其他回答(4)
-1

请提供你要的结果示例?【兴趣:人数】是这样的数据吗?

收获园豆:5
幻天芒 | 园豆:36594 (高人七级) | 2015-05-08 10:21

是的。

支持(0) 反对(0) LiGoper | 园豆:32 (初学一级) | 2015-05-08 10:23

@愤怒的TryCatch: 将单个用户的兴趣,通过,拆分,形成类似

用户1 排鼓

用户1 堂鼓(大鼓)

的表结构,然后再使用group by 就可以了。

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2015-05-08 10:25

@幻天芒: 这个方法简单,直接

支持(0) 反对(0) Froyo | 园豆:494 (菜鸟二级) | 2015-05-11 12:00

@Froyo: :),个人觉得是最普遍的做法。

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2015-05-11 12:06
-4

1、这个有什么难的? 难在哪儿?就算呗。

2、这个案例充分说明了,不管什么样的数据库,都挡不住人类的智慧。

收获园豆:1
爱编程的大叔 | 园豆:30663 (高人七级) | 2015-05-08 10:21

大叔,帮忙提供一个解决方案呗。

支持(0) 反对(0) LiGoper | 园豆:32 (初学一级) | 2015-05-08 10:24

@愤怒的TryCatch: 解决什么问题?

好吧,我好好说话。

1、什么叫问题,你需要2秒解决的,现在是2小时,这是问题。

如果你两天计算出来的都可以接受,2小时就不是问题。

2、什么是你可以接受的,修改数据库?慢?还是钱?还是修改软件?

你做了什么努力,卡在什么上面?

3、有人修改软件是为了好看,有人是为了快速,有人是为了稳定,有人是为了百年大计,

你是为了什么?

4、环境、需求然后才是问题,你数据库一共就6条数据,看一眼就算出来了,不用使用软件的。

5、没有一种放之天下而皆准的解决方案。有的客户只肯出10万,有的客户肯出1千万,你认为解决方案会一样吗?

支持(0) 反对(0) 爱编程的大叔 | 园豆:30663 (高人七级) | 2015-05-08 10:27
-1

行转列统计计算 case when else end

气质优雅的猪 | 园豆:283 (菜鸟二级) | 2015-05-08 13:40
-2

如果是我的话,我肯定会用C#这种逻辑程序语言来处理。

我读取每个用户的信息。

如果读到一个用户,比如A用户,他的兴趣爱好是 弹琴,跑步,上网。我就在我的D盘中建三个文件夹,分别为弹琴,跑步,上网。然后再在 每个文件夹中建一个txt的文件,文件名为这个用户的ID。

然后再读取B用户,如果他的爱好是弹琴,飙车,打架。我就再在D盘中建文件,因为弹琴已经存在在,就不用重建了,只需要在弹琴文件夹中 加上这个B用户的ID就行了。然后再建飙车,打架文件夹。然后再在这两个文件夹中加上B用户的txt文件。

以此类推。最后就可以根据文件夹的个数,和每个文件夹中的个数来判断 百分比了

收获园豆:1
田麦成 | 园豆:1982 (小虾三级) | 2015-05-08 16:17

写IO是相当耗时的操作。

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2015-05-11 12:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册