题一: 用SQL写一段代码,输入字符串"abc,asdfj",则输出字符串"abc",即只输出输入字符串里","前面的字符,如果输入字符串里不包括","则输出原字符串。
题二:
表1:部门表
Departments
{
int id,
varchar(50) Name
}
表2:雇员表
Employees
{
int id,
int DepartmentsID, (部门外键)
float Wage (工资)
} 查询各个部门 部门名称 ,员工数,员工工资总和,员工最高工资,最低工资,平均工资求高手速秒
题二:
表1:部门表
Departments
{
int id,
varchar(50) Name
}
表2:雇员表
Employees
{
int id,
int DepartmentsID, (部门外键)
float Wage (工资)
} 查询各个部门 部门名称 ,员工数,员工工资总和,员工最高工资,最低工资,平均工资求高手速秒
解决方案 »
- SQL server 中怎么样将一列时间DATETIME型转换成一列字符串类型
- sql 中 ,如何求 , 当前日期,在 当前周的 第几天
- 问下这个查询应该怎么写
- 请问经过很多张表的联合,在用聚合函数算出来的值,是不是要存储下来呢,因为以后会用到,不存储用一次算一次....有什么好方法
- 多表查询问题?
- 关于MSDE的实例安装问题
- 我的sql server 2008在连接时出现错误
- 配置SQLServer的ODBC,为什么ODBC服务器名配“.”比配机器名、IP地址要慢很多呢?
- 看一下以下SQL查询语句
- 急!!!请各位大侠帮忙,SQL查询问题。
- SQL SERVER 2008 远程连接不了。各位高手救命啊!问题情况有点特别,弄了好几天了。
- SQL 2000 安不了ksp4 急。。。。谢谢
declare @s as varchar(20)
set @s = 'abc,asdfj'select case when charindex(',',@s) > 0 then left(@s , charindex(',',@s) - 1) else @s end/*
--------------------
abc(所影响的行数为 1 行)
*/
count(1) 员工数 ,
sum(n.Wage) 员工工资总和 ,
max(n.Wage) 最高工资,
min(n.Wage) 最低工资,
avg(n.wage) 平均工资
from Departments m , Employees n
where m.id = n.id
group by m.Name
select a.name 部门名称,count(1) as 员工数,sum(Wage) as 员工工资总和,
max(wage) as 员工最高工资,min(wage) as 员工最低工资,avg(wage) as 平均工资
from
部门表 a,
雇员表 b
where a.id=b.DepartmentsID
group by a.name
--不考虑每个部门是否都有员工。没有员工的不显示。
select m.Name 部门名称,
count(1) 员工数 ,
sum(n.Wage) 员工工资总和 ,
max(n.Wage) 最高工资,
min(n.Wage) 最低工资,
avg(n.wage) 平均工资
from Departments m , Employees n
where m.id = n.id
group by m.Name--考虑可能某部门一个员工也没有,没有员工的显示为NULL。
select m.name , t.员工数,t.员工工资总和,t.最高工资,t.最低工资,t.平均工资
from Departments m left join
(
select n.id,
count(1) 员工数 ,
sum(n.Wage) 员工工资总和 ,
max(n.Wage) 最高工资,
min(n.Wage) 最低工资,
avg(n.wage) 平均工资
from Employees n
group by n.id
) t
on m.id = n.id
如果是oracle则为:select case when instr(@s,',') > 0 then substr(@s , instr(@s,',') - 1) else @s end from dual;