我怎么能做这个SQL查询?

时间:2010-01-02 20:40:44

标签: sql

我有

  • 员工表(Eno,FName,Lname,DOB,Tell,Address,Salary,Pno,Bno)

// Clients Table表示有关客户端的所有数据

// CID是客户端号码

  • 客户表(CID,FName,LName,地址,告诉,平衡......)

//移动表表示客户端可以执行的所有任务 // MID是移动次数// M_type是任务类型

  • 移动表(MID,M_type)// M_type作为存款,提款......

//工作表是从任何客户端

所有活动的
  • 工作表(WID,CID,C_value,MID,DOBmovement,Eno)

我怎么能:

  1. 进行查询以检索有关为最大客户数提供服务的员工的所有数据。

  2. 在每个月末,您的余额可能会通过存款或退出流程进行更改, 因此,您必须在此过程后找到最终余额。

  3. 用Sql语言编写。

1 个答案:

答案 0 :(得分:1)

(1)要弄清楚每位员工服务的客户数量,请尝试考虑这些运营商:

  • DISTINCT - 获取工作表中唯一的CID / EID对
  • GROUP BY和COUNT - 获取每个EID的CID值数
  • ORDER BY和FIRST - 从具有最大COUNT(CID)的组中获取EID

一旦你弄清楚如何以这种方式获得正确的EID,那么你可以使用你在一个简单的

中作为子查询编写的代码
SELECT * FROM EMPLOYEES WHERE EID=...

(2)根据您问题中的信息,目前尚不清楚如何找到期末余额,因为起始余额显然不存在。也许你应该根据数据库中的所有存款和取款来计算,假设原始起始余额为零?如果是这种情况,那么试着考虑一下

  • 加入使用移动,以便您可以区分存款和提款
  • 合并表中的SUM以获得总存款和总提款
  • 如果答案应该是针对每个客户的,那么GROUP BY,否则只是一个简单的WHERE,只能获得特定客户的价值