SQL 查询每一列的内容,两个表的连用 5C

不好意思 SQL新人 最近在练习的时候遇到了一个问题

第一个表

movies(mid char(5),title char(64), unknown char(1),action(1), adventure char(1), children char(1))

前面是电影的ID 和名字 后面的是电影的类别, 1、0表示属不属于这几种, 不明、动作、冒险、儿童之类的等等 有很多类别,

问题1:我怎么统计有多少部动作片?多少部冒险片?多少部儿童片?等等

种类太多了,有20来种,我一条一条查感觉不太现实。

这里还有一个表

ratings(uid char(4),mid char(5), rating integer)

这个表里放的是用户给电影的评分(1分到5分)

问题2:如果我想计算每种电影的平均得分,有办法吗?

比如动作片平均3分,爱情片平均4.5分。

第一个问题我想了个方法可以算sum值得到的就是部数,但是还是只能一列一列算,还是很麻烦。

SQL问题的种类太多了,看了一些博客,感觉case之类的应该没法用在我这个问题上吧。希望能有大神给讲解下。

6个回答

不是大神,第一个问题 应该可以先列转行,再分组求和

允许修改表结构吗,如果你把电影类别设计成一个字段,不同的值代表不同的类型,你这些问题应该都很简单解决了,就是初始数据库设计表的时候有问题

你这个表建得不好,把类别建立一个基础档案,再建立一个电影类别的表,后面统计就好做了

如果表结构是你自己设计的,建议第一个表movies(mid char(5),title char(64),type_id varchar(255)),type_id是类别字段,1不明,2动作,3冒险...,电影属于多个类别的存1,2,3这种。
电影类别也可以单独建个表。
这样第一个SQL语句可以写成:SELECT type_id,count(id) as movies_num FROM movies group by type_id;
图片说明

如果要查询类别列表mysql有find_in_set函数:
select * from movies where find_in_set(2,type_id);

首先,强烈建议修改表结构,这表结构设计得比菜鸟还菜。其次,现在这样的结构你要统计也没啥简便方法,统计有多少部只能select sum(unkown),sum(action) 这样,至于第二个统计,只能一个sql得出一个平均分。可以用存储过程来实现。

你这个表结构存在明显问题,后面要增加类别还要再添加字段,建议将类别用一个字段体现,这样就很好解决了!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

3
SQL SEVER查询一列中分别有多少个重复项的sql语句
2
kettle中有源表和目标表,两个表的表输入的查询中的表名是一个变量,如何让源表中的数据更新到目标表中?
4
在SQL中怎么将一张表的一列数据复制到另一张新表中去?
2
SQL查询两张表的数据,优先查A表。没有就查B表?
7
sql查询:查询两张表的时候,左表的一条记录对应了右表的两条相同数据怎么显示一条记录?
2
SQL连表查询 两张表找出不同的值
1
sql 查询每个月的数据
4
SQL 语句怎么查询某个时间段内的数据
2
如何匹配匹配两个表的相同字段来为其中一个表的列赋值
3
sql server数据库,现在我有一张表的数据,分别放在两个数据库上。
1
有没有sql注解,可以直接计算两个列的差值?
1
SQL2008r2 查询同一个表内的不同列的内容怎么把它放在一个表
5
mysql 查询两个表,sql怎么写
2
SQL数据库A表A列与B表B列对应 怎么把对应的B表C列数据留在A表A?
3
两张表sql语句查询结果多条结果求和
3
ps\sql 查询某个表多个类型必须同时存在数据
2
当sql语句中从两表中查询的两列模糊时,如何处理
2
刚学sql,请帮忙看一下,查询这两个表中plan唯一,每一个plan中,amount最少的,plannum大于prixis的记录
1
SqlServer 查询需要部分列按条件求和
6
求助sql多表查询语句,多表查询不同分类下在另一个表里对应字段的总和