BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #4449同步于 2010/5/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

[合集] 请教一下sql查询语句

coolfantasy
2010/5/17镜像同步1 回复
☆─────────────────────────────────────☆ justk (justk) 于 (Wed May 12 13:52:26 2010) 提到: 现有一个票务情况的表Tickets,有如下字段: 门票编号 | 演出编号 | 是否检票(0代表此票未检,1代表此票已检) 用Sql如何分组显示各场演出的总票数,和已检票数? 即要生成如下的表: 演出编号 | 发放票数 | 已检票数 01 20 5 02 10 2 .......... 我用: select 演出编号, count(是否检票) as 发放票数, (???????????) from Tickets group by 演出编号 可以得到前两个表的字段,但第三个字段“已检票数”不知道怎么得出来。已检票数里存在一个条件判断,即统计每场演出编号是否检票 = 1的个数,请问如何实现? ☆─────────────────────────────────────☆ coolfantasy (Cool) 于 (Wed May 12 15:23:52 2010) 提到: 用两条 SQL 语句就完成了,不用纠结于一条 RDBMS 是对关系的描述,我一直坚持不在 SQL 里带有逻辑判断 ☆─────────────────────────────────────☆ chit (chit) 于 (Wed May 12 16:19:17 2010) 提到: 完全同意 呵呵 【 在 coolfantasy (Cool) 的大作中提到: 】 : 用两条 SQL 语句就完成了,不用纠结于一条 : RDBMS 是对关系的描述,我一直坚持不在 SQL 里带有逻辑判断 ☆─────────────────────────────────────☆ justk (justk) 于 (Wed May 12 16:59:42 2010) 提到: 我发现如果查询 发放票数 就不知道怎么得出 已检票数 查询已检票数,在where语句里又把记录过滤了,无法得到所有isCheck = 0和1的记录了 貌似两者只能取一查询 不知道有没有方法实现一次都能查询到,呵呵 【 在 coolfantasy 的大作中提到: 】 : 用两条 SQL 语句就完成了,不用纠结于一条 : RDBMS 是对关系的描述,我一直坚持不在 SQL 里带有逻辑判断 : -- : ................... 嗯,我还是分两次查询吧 求教,如果没有逻辑判断怎么能够得到已检票数?不是总得判断isCheck = 1吗 ☆─────────────────────────────────────☆ coolfantasy (Cool) 于 (Wed May 12 17:18:59 2010) 提到: 这个问题确实不能说得太深 我觉得 WHERE 字段里的 isCheck = 0 是描述两个集合之间的关系 你需要得到集合 X ,数据里的所有数据为集合 Y 这个关系就是 X = {y | y ∈ Y, y.isCheck = 0},也可以描述成为一个函数 集合论是计算机科学的基础,其实布尔判断也能这样描述,个人认为只是广义和狭义定义的区别 【 在 justk 的大作中提到: 】 : 我发现如果查询 发放票数 就不知道怎么得出 已检票数 : 查询已检票数,在where语句里又把记录过滤了,无法得到所有isCheck = 0和1的记录了 : 貌似两者只能取一查询 : ................... ☆─────────────────────────────────────☆ yypp159 (yypp158) 于 (Wed May 12 18:46:09 2010) 提到: 我不知道我这个想法是否可行。。。题目中有个很好的提示,1就是检了,0就是没检。。。你统计演出编号的和就可以了呀。。先数据类型转换,再进行求和。。10个人有五个人检了那就是1+1+1+1+1+0+0+0+0+0+0。。。。应该可以吧。。。 ☆─────────────────────────────────────☆ justk (justk) 于 (Thu May 13 09:20:08 2010) 提到: 大概理解一些了,谢谢 我还是采用两次查询的方式了,其实分两次的话实现还是很简单的,就是查询次数会变多 【 在 coolfantasy 的大作中提到: 】 : 这个问题确实不能说得太深 : : 我觉得 WHERE 字段里的 isCheck = 0 是描述两个集合之间的关系 : ................... ☆─────────────────────────────────────☆ justk (justk) 于 (Thu May 13 09:22:48 2010) 提到: 想法不错,这样可以不用在where语句中添加isCheck = 1,从而不会过滤掉isCheck = 0的记录,便可以用isCheck的和相加得到检票数了,我回去也试试,谢谢:) 【 在 yypp159 的大作中提到: 】 : 我不知道我这个想法是否可行。。。题目中有个很好的提示,1就是检了,0就是没检。。。你统计演出编号的和就可以了呀。。先数据类型转换,再进行求和。。10个人有五个人检了那就是1+1+1+1+1+0+0+0+0+0+0。。。。应该可以吧。。。 : --
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
bygones机器人#1 · 2010/7/2
select 演出编号,count(门票编号) as 发放票数,sum(是否检票) as 已检票数from Tickets group by 演出编号