ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] sql语句遇到困难……

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-11-26 13:37 | 显示全部楼层 |阅读模式
下面是我的语句,看了半天才看出错误的地方,但是却不知道怎么修改,看看大家有什么好的方法。
  1. select *,
  2. (select count(*) from [sheet1$a:b] where 水果 = a.水果),
  3. (select count(*) from [sheet1$a:b] where 人物 = a.人物),
  4. (select count(*) from (select distinct 水果 from [sheet1$a:b] where 人物 = a.人物))
  5. from [Sheet1$a:b] a
复制代码
dic.rar (7.63 KB, 下载次数: 32)

TA的精华主题

TA的得分主题

发表于 2010-11-26 13:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-26 14:04 | 显示全部楼层
这样的数据干脆直接用透视表好了

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-26 14:08 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-26 14:31 | 显示全部楼层
这里有个三层的相关子查询,在网上找了很多资料才看懂,就是写不出来。看来也就两层的能力了。

查询选修了全部课程的学生姓名。
        SELECT Sname
         FROM Student
         WHERE NOT EXISTS
            (SELECT *
              FROM Course
              WHERE NOT EXISTS
                  (SELECT *
                   FROM SC
                   WHERE Sno= Student.Sno
                      AND Cno= Course.Cno)

TA的精华主题

TA的得分主题

发表于 2010-11-26 14:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
内层应该做不到吧,因为一个人吃的不同种类,但他会有重复的种类,你不用distinct或者分组的功能去掉,统计的结果还是不对的。

TA的精华主题

TA的得分主题

发表于 2010-11-26 14:12 | 显示全部楼层
参考一下。
  1. select *,
  2. (select count(*) from [sheet1$a:b] where 水果 = a.水果),
  3. (select count(*) from [sheet1$a:b] where 人物 = a.人物),
  4. (select count(*) from (select distinct 人物,水果 from [sheet1$a:b]) where 人物 = a.人物)
  5. from [Sheet1$a:b] a
复制代码
QQ截图未命名.png

dic.zip

5.76 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-26 14:18 | 显示全部楼层
suwenkai兄果然厉害
把where 人物 = a.人物放在语句的外层,厉害。我没想到
放在内层就不知道怎么写了。

我是这样理解的
select count(*) from (select distinct 水果 from [sheet1$a:b] where 人物 = a.人物)
distinct语句的a.人物找的是外层的select count (*)语句,而这个语句没有a

TA的精华主题

TA的得分主题

发表于 2010-11-26 14:43 | 显示全部楼层
EXCEL-SQL里好像没有EXISTS这个用法的吧,这个是T-SQL上的用法。这个我也不明白是怎么运作的。

TA的精华主题

TA的得分主题

发表于 2010-11-26 14:48 | 显示全部楼层
SELECT t.*,
       t1.此水果被吃几回,
       t2.此人吃了几回,
       t3.此人吃了几种
FROM   (([sheet1$a:b] t
         LEFT JOIN (SELECT   水果,
                             COUNT(水果) AS 此水果被吃几回
                    FROM     [sheet1$a:b]
                    GROUP BY 水果) t1
           ON t.水果 = t1.水果)
        LEFT JOIN (SELECT   人物,
                            COUNT(人物) AS 此人吃了几回
                   FROM     [sheet1$a:b]
                   GROUP BY 人物) t2
          ON t.人物 = t2.人物)
       LEFT JOIN (SELECT   人物,
                           COUNT(水果) AS 此人吃了几种
                  FROM     (SELECT DISTINCT *
                            FROM   [sheet1$a:b])
                  GROUP BY 人物) t3
         ON t.人物 = t3.人物

[ 本帖最后由 pc520 于 2010-11-26 14:55 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-30 02:33 , Processed in 0.047972 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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