这个题是在其他地方看到的
可是我不会,呵呵!
一个表,100条以上的信息,表的结构:SQL> desc t_d
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------- NAME VARCHAR2(10)
COLOR VARCHAR2(10)
COUNT NUMBER(5)
表中数据
SQL> select * from t_d;NAME COLOR COUNT
---------- ---------- ----------
产品1 red 100
产品1 red 200
产品1 red 100
产品1 red 500
产品1 blue 500
产品1 blue 1100
产品1 blue 10
产品1 blue 104
产品2 blue 104
产品2 blue 114
产品2 blue 154NAME COLOR COUNT
---------- ---------- ----------
产品2 blue 150
产品2 blue 15
产品2 red 15
产品2 red 150
产品2 red 250
产品2 red 2500
产品2 red 25000
产品2 red
产品1 red已选择20行。
1:
按照产品分类,仅列出各类商品中红色多于蓝色的商品以及差额数量;
2:
按照产品分类,将数据按照下列方式统计显示;
产品,红色,蓝色,
可是我不会,呵呵!
一个表,100条以上的信息,表的结构:SQL> desc t_d
名称 是否为空? 类型
----------------------------------------- -------- ---------------------------- NAME VARCHAR2(10)
COLOR VARCHAR2(10)
COUNT NUMBER(5)
表中数据
SQL> select * from t_d;NAME COLOR COUNT
---------- ---------- ----------
产品1 red 100
产品1 red 200
产品1 red 100
产品1 red 500
产品1 blue 500
产品1 blue 1100
产品1 blue 10
产品1 blue 104
产品2 blue 104
产品2 blue 114
产品2 blue 154NAME COLOR COUNT
---------- ---------- ----------
产品2 blue 150
产品2 blue 15
产品2 red 15
产品2 red 150
产品2 red 250
产品2 red 2500
产品2 red 25000
产品2 red
产品1 red已选择20行。
1:
按照产品分类,仅列出各类商品中红色多于蓝色的商品以及差额数量;
2:
按照产品分类,将数据按照下列方式统计显示;
产品,红色,蓝色,
解决方案 »
- ora012535 TNS:operation time out 怎么解决?
- 复合索引怎么用?
- oracle 动态绑定变量
- oracle 外连接
- 怎么出来两个之间的数据同步问题?
- 请教 insert /*+append */ table nologging selec * from table_other 这种方式下数据库事务的控制
- 请问有人知道如何配置TOAD FOR ORACLE,打开DBMS_DEBUG功能么?
- Solaris man设置
- oracle错误代码表
- exp username/password@conname file=d:\aa\aa.dmp full=y 后,如何恢复他呢?(初学) ?
- 如何在大数据量下最有效率的修改某一字段
- Oracle 安装 --- 在线急等
select name,color,sum(nvl(count,0))from t_d
group by name,color;但是记录与记录之间如何比较。SQL> select name,color,sum(nvl(count,0)) from t_d group by name, color;NAME COLOR SUM(NVL(COUNT,0))
---------- ---------- -----------------
产品1 red 900
产品1 blue 1714
产品2 red 27915
产品2 blue 537red 和blue如何比较???
第二步:计算出同一产品中蓝色、红色数量各有多少,然后计算差额
第三步:将红色多于蓝色的产品插入一张临时表,插入的信息包括:产品name、红色数量、蓝色数量
第四步:按第一步查询的结果循环做第二步、第三步
第五步:查询临时表数据。select 产品name、红色数量、蓝色数量 from 临时表
to:3楼
用sql语句实现不了吗?
存储过程我还不会,呵呵。
SUM+DECODE
然后外面再来层判断
select name, sum(decode(color,'red',count,0)) nred,
sum(decode(color,'blue',count,0)) nblue from t_d group by name
)where nred>nblue;select name, sum(decode(color,'red',count,0)) nred,
sum(decode(color,'blue',count,0)) nblue from t_d group by name;
(1)既然是要求RED多于BLUE的记录,那为什么在最后显示的结构中,会是:
产品,红色,蓝色
这样的结构呢.
(2)既然有颜色的数据的比较,为什么又只能根据产品进行分组呢.
having sum(decode(color,'red',count,-count))>0
select name, sum(decode(color,'red',count,0)) red,
sum(decode(color,'blue',count,0)) blue from t_d group by name;
(decode(color,'red',count,0)),改为
(decode(color,'red',nvl(count,0),0))就更好了