一个简单的sql统计语句 麻烦帮忙看看解决思路
一个简单的sql统计语句 麻烦帮忙看看
我用
表1:
其中 Name是varchar类型 Price是float类型 b是varchar类型
问题: 我想在上面这张表的基础上得到如下这张表
表2:
这个上面表2的Total就是在表1里面出现过的Name里面重复的数量 也就是说在表2里面Name段里面不会再
出现像表1那样重复的数据了,而重复的次数出现在Total段里面
表2的SumPrice段是存储的原来表1里面一个Name所对应的price的总和 比如表1里面有2个N2 每个N2对应
的Price都是20 所以表2里面SumPrice就应该是2*20=40
为了达到这种效果 请问怎么设置语句 从数据库里面直接搜索出表2 麻烦各位了
------解决方案--------------------
基于Oracle 语法:
我用
- SQL code
SELECT * FORM A WHERE b='a'
表1:
- SQL code
Name Price b N1 10 a N1 10 a N1 10 a N2 20 a N3 30 a N3 30 a N2 20 a
其中 Name是varchar类型 Price是float类型 b是varchar类型
问题: 我想在上面这张表的基础上得到如下这张表
表2:
- SQL code
Name Total SumPrice b N1 3 30 a N2 2 40 a N3 2 60 a
这个上面表2的Total就是在表1里面出现过的Name里面重复的数量 也就是说在表2里面Name段里面不会再
出现像表1那样重复的数据了,而重复的次数出现在Total段里面
表2的SumPrice段是存储的原来表1里面一个Name所对应的price的总和 比如表1里面有2个N2 每个N2对应
的Price都是20 所以表2里面SumPrice就应该是2*20=40
为了达到这种效果 请问怎么设置语句 从数据库里面直接搜索出表2 麻烦各位了
------解决方案--------------------
基于Oracle 语法:
- SQL code
select name, count(name) as Total, 'a' as b, sum(Price) as SumPrice from ( select * from a where b = 'a' ) group by name;