sql-server - MySQLServer:检查组中是否存在条件,然后标记整个组
问题描述
我的目标是在现有表中添加另一列,以查看值/条件是否存在于组中,并适当地标记整个组(如果存在或不存在)。
如果团队有一个预算 >= 20M 或 Actual_Spend >=2.5MI 的项目,则希望在类别列中将团队及其所有项目标记为表 1。无论同一团队中的其他项目是否符合此标准。
我将提供一个带有我的解决方案的 SQL 小提琴链接:http ://sqlfiddle.com/#!18/3ddaf/12/0 我 最终会得到两个额外的“团队”和“类别”列,但不确定如何他们到了那里。下面是我正在寻找的最终结果。我愿意接受比我提供的更好的解决方案。
感谢您的时间
| Team | ProjectID | Budget | Actual_Spend | State | Category |
|------|-----------|----------|--------------|------------|----------|
| Cyan | 2 | NULL | NULL | Utah | Table 1 |
| Blue | 1 | NULL | 3000000 | California | Table 1 |
| Cyan | 1 | 20000000 | 1000000 | Utah | Table 1 |
| Blue | 2 | 22000000 | NULL | California | Table 1 |
| Red | 1 | 7000000 | 1000000 | Washington | Table 2 |
| Red | 2 | 19999000 | 2490000 | Oregon | Table 2 |
| Gray | 1 | 19000000 | 2500000 | Utah | Table 1 |
| Gray | 1 | 10000000 | 500000 | Utah | Table 1 |
提供创建数据集的代码:
Create Table Source_Data
(
Team varchar(50),
ProjectID INT,
BUDGET INT,
Actual_Spend INT,
State varchar(max),
)
INSERT INTO Source_Data
VALUES
('Blue',1,NULL,3000000,'California'),
('Green',1,20000000,1000000,'Utah'),
('Blue',2,22000000,NULL,'California'),
('Green',2,NULL,NULL,'Utah'),
('Red',1,7000000,1000000,'Washington'),
('Red',2,19999000,2490000,'Oregon'),
('Yellow',1,19000000,2500000,'Utah'),
('Yellow',1,10000000,500000,'Utah');
解决方案
我认为您正在寻找窗口功能:
select
s.*,
min(case when Budget>=20000000 or Actual_Spend>=2500000 then 'Table1' else 'Table2' end)
over(partition by team) Category
from Source_Data s
如果具有相同团队的任何记录满足条件Budget>=20000000 or Actual_Spend>=2500000
,则新列产生Table1
,否则产生Table2
。
团队 | 项目ID | 预算 | 实际_花费 | 状态 | 类别 :--- | --------: | --------: | ------------: | :--------- | :-------- 蓝色 | 2 | 22000000 | 空| 加利福尼亚 | 表格1 蓝色 | 1 | 空| 3000000 | 加利福尼亚 | 表格1 青色 | 1 | 20000000 | 1000000 | 犹他州 | 表格1 青色 | 2 | 空| 空| 犹他州 | 表格1 灰色 | 1 | 19000000 | 2500000 | 犹他州 | 表格1 灰色 | 1 | 10000000 | 500000 | 犹他州 | 表格1 红色 | 1 | 7000000 | 1000000 | 华盛顿 | 表2 红色 | 2 | 19999000 | 2490000 | 俄勒冈 | 表2
推荐阅读
- javascript - 如何将加载的模型保存在 localstorage 或 IndexedDB 中
- python - 为什么我的 2 层神经网络对二元分类的准确率只有 50%?
- google-chrome - 在从子子域定义的子域上使用 cookie
- postman - 如何在不查询数据库的情况下从公共概念页面 url 获取页面 ID
- java - JDBC 出现 SQL 错误,参数超出范围
- javascript - 如何删除`iframe`元素内的`#titlebar` div元素?
- javascript - 反应不加载脚本
- excel - 如何/使用哪个公式来显示错误条件的组合文本结果(用于挂起的任务报告使用)?
- python - 对 MFCC 处理感到困惑
- python - 如何设计一个 Python 函数来打印仅将前对角元素设置为 True 的矩阵?