作者kevin524 (等待的天空)
看板Database
标题Re: [SQL ] mysql语法请教
时间Tue May 15 21:48:22 2007
※ 引述《MugenPower (无限MUGEN)》之铭言:
: ※ 引述《kevin524 (等待的天空)》之铭言:
: : 请问一下
: : 假如我有一个table
: : 要依据栏位进行不同值的的count计算
: : 最後依据计算出来的key值做合并
: : 要如何做到?谢谢!!
: : 如table有4个栏位
: : 时间 | 节次 | 参与上课 | 学号
: : 2007-5-15 2 1 abc
: : 2007-5-15 2 0 cde
: : 2007-5-15 3 1 dfg
: : 2007-5-15 3 1 ekj
: : 2007-5-16 3 0 kfj
: : 2007-5-16 3 0 qwe
: : 有去上课为1,没去则否
: : 我想利用时间和节次做分组来计算
: : 当天每个节次上课人数以及缺课人数计算
: : 最後是以时间和节次为分类
: : 如
: : 时间 | 节次 | 上课人数 | 缺席人数
: : 2007-5-15 2 2 1
: : 2007-5-15 3 3 0
: : 2007-5-16 3 2 2
: : 以上结果要怎麽下语法才能做到,谢谢!!
: MySQL 中好像没有类似 ORACLE的 decode 或是 case 的"函式"
: 若支援这样的函式 就可以这麽下
: select 时间 ,
: 节次 ,
: count(参与上课) ,
: sum(decode(参与上课 , 1 , 0 ,1 )
: from TABLE
: group by 时间 , 节次
: 或是
: select 时间 ,
: 节次 ,
: count(参与上课) ,
: sum( case WHEN 参与上课=1
: THEN 0
: else 1
: end
: )
: from TABLE
: group by 时间 , 节次
: 不过由於 参与上课 VALUE 为 1 & 0
: 所以说 并不需使用 case 或 decode 这麽麻烦
: 便可以得到上课的人数
: select 时间 ,
: 节次 ,
: count(参与上课) ,
: sum(参与上课)
: from TABLE
: group by 时间 , 节次
: 再改一下
: select 时间 ,
: 节次 ,
: count(参与上课) ,
: count(参与上课)-sum(参与上课)
: from TABLE
: group by 时间 , 节次
: 这样就是缺席人数啦
: 幸好那个栏位的值是 0 与 1
若是改成N和Y勒?
>"<
: ( ′▽`)y▂ξ
真是谢谢阿!!感恩!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.154.60
※ 编辑: kevin524 来自: 61.59.154.60 (05/15 21:49)