ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL language里面的经典问题

SQL language里面的经典问题

原创 Linux操作系统 作者:张国平 时间:2010-07-17 14:22:55 0 删除 编辑

 

   一个很经典问题,

   S表示学生,结构为

   {

   sid                  int              primary key,

    sname       varchar[50],

   }

  T表示老师,结构为

  {

   tid                  int              primary key,

    tname       varchar[50],

   }

 

  S-T表示选课情况,结构为

   {

   sid                  int              not null   ,

     tid                  int              not null   ,

   }

现在求选某个老师的课的学生超过50的,老师ID.

如果用基本的select的语句,是很难做到,必须用到group by 和having

 1、group by和distinct,但是最大的不同就是可以进行带条件的查询

select distinct(tid) ,count(sid)
from S-T
where count(sid)>40

 这个会报错

==========================================

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
对应的查询

select tid ,count(sid)
from S-T
group by tid

当时这里面不呢个用where,只可以用having来放入对于聚合的条件语句,

select tid ,count(sid)
from S-T
group by tid

having count(sid)>50

那么where怎么用,where可以针对没有聚合的条件

比

select tid ,count(sid)
from S-T

where tid=1
group by tid

having count(sid)>50

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22259926/viewspace-668255/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
SAP 金融风险管理产品专家

注册时间:2009-08-05

  • 博文量
    229
  • 访问量
    635950