例如表 tst
w_id defect
1 a
1 b
2 c
2 a
3 a
4 b
希望的统计结果是这样:例如1有2个defect,统计的时候只要1个。任意是a或者b都行,同理2也一样,那么结果可以是
defect qty
a 3
b 1
因为id只有4个。所以qty的和只要是4即可。或者这样
defect qty
a 1
b 2
c 1
目的就是sum defect的结果数量=id的数量。id重复的,任意取一个defect即可。
w_id defect
1 a
1 b
2 c
2 a
3 a
4 b
希望的统计结果是这样:例如1有2个defect,统计的时候只要1个。任意是a或者b都行,同理2也一样,那么结果可以是
defect qty
a 3
b 1
因为id只有4个。所以qty的和只要是4即可。或者这样
defect qty
a 1
b 2
c 1
目的就是sum defect的结果数量=id的数量。id重复的,任意取一个defect即可。
解决方案 »
- 语句优化
- 稍复杂的查询语句,求未达标人数及与享受面积差
- 一个关于Oracle字符集的复杂问题 求教大师!
- ORACLE牛人进来看看,这到底是为什么呢?
- 请教大家了,如何移动数据库中已有内容的表空间?
- 请教关于数据的导入导出问题
- vpn连接数据库 查询语句报错ORA-03113:通信通道的文件结尾
- 怎么样用exp备份数据时形成的文件名是动态的?例如我每天用exp自动备份一次,使其文件名每天不同,比如加上当天的日期等
- 各位大虾,数据导入的问题。
- 有好的动态SQL ( Excute immediate ) 开发项目中的例子吗
- PL/SQL左右连接的问题
- oracle 8.1.7 存储过程存入blob字段为何失败?
defect qty
a 1
b 2
c 1
目的就是sum defect的结果数量=id的数量。id重复的,任意取一个defect即可。没看懂
COUNT(w_Id)
FROM (SELECT w_Id,
Substr(Wm_Concat(Defect), 1, 1) AS Defect
FROM (SELECT *
FROM Tst
ORDER BY Defect)
GROUP BY w_Id)
GROUP BY Defect结果:
DEFECT COUNT(W_ID)
------ -----------
a 3
b 1
SELECT Nvl(Substr(Defect, 1, Instr(Defect, ',', 1) - 1), Defect),
COUNT(w_Id)
FROM (SELECT w_Id,
Wm_Concat(Defect) AS Defect
FROM (SELECT *
FROM Tst
ORDER BY Defect)
GROUP BY w_Id)
GROUP BY Nvl(Substr(Defect, 1, Instr(Defect, ',', 1) - 1), Defect);结果:
DEFECT COUNT(W_ID)
-------------------------------------------------------------------------------- -----------
aaa 3
bb 1
from (select t.*, rank() over(partition by t.id order by t.defect) r_num
from test_defect t) tt
where tt.r_num <> 2 --去提重复值
SN_KEY DEFECT_CODE
449747 M8401
449747 M8401
449747 F8487
449747 F8487
489534 F8487
489628 M8417
490532 M8487
490532 M8487
490532 M8487
490532 M8487
490542 F8404
903691 M8404
904393 M8410
907369 M8123
907942 M8404
908241 M8404
908580 M8401
908580 F8487
908962 F8404
例如上面的數據,我對sn_key要取唯一的,重復的不要。取好了之后,by defect_code做統計。
就是一個有重復記錄的表,要統計這個表的記錄,去掉重復,無論重復幾個,都只取一個。去掉重復以后,再對這個表做sum。
SN_KEY DEFECT_CODE
449747 M8401
449747 M8401
449747 F8487
449747 F8487
這個重復怎么去?得到任何以下的一個結果都行。
SN_KEY DEFECT_CODE
449747 M8401SN_KEY DEFECT_CODE
449747 F8487
by defect_code 做sum
DEFECT_CODE qty
F8487 1