永发信息网

复杂的sql语句

答案:2  悬赏:80  手机版
解决时间 2021-03-07 05:31
  • 提问者网友:一抹荒凉废墟
  • 2021-03-06 17:49
举个例子,假如test表中存在id,name,time1,time2,time3,time4,time5六个字段,我需要对每条记录的时间字段进行校验,time1大于time2表示“错误一”,time1大于time3表示“错误二”,time4大于time5表示“错误三”;我想写一条sql语句,查询小明的五个时间中存在哪几个错误,请问sql语句应该怎么写
最佳答案
  • 五星知识达人网友:执傲
  • 2021-03-06 18:49
描述有点不具体,这个是把结果以列的形式展示:
select id,name,case when time1>time2 then '错误一'  end as type1,
               case when time1>time3 then '错误二'  end as type2,
               case when time4>time5 then '错误三'  end as type3
from test
where name = '小明'

---结果集放在一起
select id,name,case when time1>time2 then '错误一'  end +
               case when time1>time3 then '错误二'  end +
               case when time4>time5 then '错误三'  end as Result
from test
where name = '小明'
全部回答
  • 1楼网友:孤独入客枕
  • 2021-03-06 19:06
语句(假设你的系统取日期月份的函数month): select month(注册日期),count(*) from 表 group by 1 产生的结果是: 1 23 2 10 3 45 如果你计算每个月度(200801、200802、……)的注册人数,应该使用下面的语句(假设你的系统取日期年度的函数是year): select year(注册日期)+" "+month(注册日期),count(*) from 表 group by 1 假如你的系统连接字符串不是使用+,那换为相应的字符或者函数,比如informix是使用year(注册日期)||month(注册日期),比如mysql是使用concate函数 补充: select语句的教材专门有聚合函数那一章,你仔细看看吧。 在select语句里面,group子句配合sum,avg,max,min等函数完成分类统计功能,执行我的两个语句,查看输出的结果,你就知道group的含义,下面取一个最简单的例子: “select count(*) from 表”这个sql语句返回的结果只有一个,就是数据库中的总记录条数,如果我们想统计不同用户名的分组进行汇总的记录条数,就应该在select后增加一个字段,同事group by这个字段,完整的语句是: select 用户名,count(*) from 表 group by 用户名 这个语句也可以这样写: select 用户名,count(*) from 表 group by 1 这时候group by后面的整数表示按照相应序号的select列分组,这里的1表示第一个的选择结果“用户名”。如果我们想按用户分组查记录数,但是只现实有重复的记录,那么用group by的一个having修饰,完整语句如下: select 用户名,count(*) from 表 group by 用户名 having count(*)>1
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯