ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1139|回复: 7

求助EXCEL SQL

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-30 12:03 | 显示全部楼层 |阅读模式
本帖最后由 ctcc-lixiaoping 于 2013-6-30 12:08 编辑

对两张表中的不同字段查询求和:
表1:语音业务KPI

ci        SDCCH试呼次数        TCH掉话次数        SDCCH掉话次数        TCH话务量
11001        339        0        0        3.96
11001        305        0        0        3.66
11001        328        0        0        4.33
11002        351        0        1        3.38
11002        316        1        0        1.15
11002        378        0        0        1.82
11002        379        0        0        1.61
11002        370        0        1        2.51
11002        337        1        0        3.22
11002        343        0        0        4.74
11003        528        0        0        1.7
11003        546        0        0        1.51
11003        477        0        0        1.52
表2:电子眼MR数据
ci        上行话音质量0采样点数        上行话音质量1采样点数        上行话音质量2采样点数
11001        25428        34        102
11001        29206        39        134
11001        29240        60        97
11002        17895        44        90
11002        18215        24        44
11002        38091        51        92
11003        12365        54        62
11003        9645        20        38
11003        10478        30        42
需要对两张表中以CI进行求和或求平均,如以CI对话务求和,对上行话音质量0采样点数求平均,结果统计出来的结果是实际和的行数倍,如本来11003的话务量和为1,但运行SQL后结果却是:实际和1*CI的行数,代码如下,请大侠指导下。
select
A2.CI as CI,
sum(SDCCH试呼次数),
avg(上行话音质量0采样点数) AS [上行0级质量]
from [语音业务KPI$] A1,[电子眼MR数据$] A2
WHERE A1.CI=A2.CI
group by A1.CI结果要求显示为:
ci
SDCCH试呼次数
上行话音质量0采样点数
11001
求和
求平均
11002
求和
求平均
11003
求和
求平均

TA的精华主题

TA的得分主题

发表于 2013-6-30 12:45 | 显示全部楼层
干嘛不上附件?!

TA的精华主题

TA的得分主题

发表于 2013-7-1 09:00 | 显示全部楼层
你对语句的执行顺序理解错误,SQL并不是按语句书写的顺序先后来执行

from [语音业务KPI$] A1,[电子眼MR数据$] A2
WHERE A1.CI=A2.CI

产生笛卡尔积,11001为3*3=9条记录

group by A1.CI
sum(SDCCH试呼次数),
avg(上行话音质量0采样点数) AS [上行0级质量]

结果会虚增

正确的方法是先聚合再关联

select
from
(
select
from tb1
group by
) as a
join
(
...
) as b
on

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-1 12:45 | 显示全部楼层
本帖最后由 ctcc-lixiaoping 于 2013-7-1 13:00 编辑



按你的指导写了,提示有错误,select 子句中包含了一个保留字,或拼写错误,对SQL不太懂,请指教,谢谢!!!
select
from
(select
ci,
sum([SDCCH试呼次数]) AS [SD试呼次数]
from [语音业务KPI$]
group by ci
) as A1
inner join
(select
SUM([上行话音质量0采样点数]) AS [上行质量]
from [电子眼MR数据$]
group by ci
) AS A2
ON A1.ci=A2.ci


TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-1 13:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
amazeyeli 发表于 2013-7-1 09:00
你对语句的执行顺序理解错误,SQL并不是按语句书写的顺序先后来执行

from [语音业务KPI$] A1,[电子眼MR数 ...

按你的指导写了,提示有错误,select 子句中包含了一个保留字,或拼写错误,对SQL不太懂,请指教,谢谢!!!
select
from
(select
ci,
sum([SDCCH试呼次数]) AS [SD试呼次数]
from [语音业务KPI$]
group by ci
) as A1
inner join
(select
SUM([上行话音质量0采样点数]) AS [上行质量]
from [电子眼MR数据$]
group by ci
) AS A2
ON A1.ci=A2.ci

TA的精华主题

TA的得分主题

发表于 2013-7-2 07:57 | 显示全部楼层
select 后面要加你要输出的东西啊,如果是全部的话可以用*
select *
from
(select
ci,
sum([SDCCH试呼次数]) AS [SD试呼次数]
from [语音业务KPI$]
group by ci
) as A1
inner join
(select
SUM([上行话音质量0采样点数]) AS [上行质量]
from [电子眼MR数据$]
group by ci
) AS A2
ON A1.ci=A2.ci

TA的精华主题

TA的得分主题

发表于 2013-7-2 07:58 | 显示全部楼层
实际上*可以是 a1.ci,[SD试呼次数],[上行质量]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-2 16:30 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 18:40 , Processed in 0.031824 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表