当前位置: 首页 > 面试题库 >

SQL使用Group by语句基于第二列值减去列值

郑曜灿
2023-03-14
问题内容

我有一个看起来像这样的SQL语句:

select FY_CD, PD_NO, INPUT, SUM(HOURS) 
from LABOR_TABLE
group by PD_NO, INPUT;

返回此:

FY_CD|PD_NO| INPUT |    HOURS

2008    1   Actuals     61000
2008    1   Baseline    59000
2008    2   Actuals     54000
2008    2   Baseline    59000
2008    3   Actuals     60000
2008    3   Baseline    70000

我试图弄清楚如何从每个期间的基准值中减去实际值,并返回以下内容:

FY_CD|PD_NO| INPUT |    HOURS

2008    1   Variance    2000
2008    2   Variance    -5000
2008    3   Variance    -10000

任何帮助表示赞赏。


问题答案:

实际上,您可以通过CASE检查的值直接直接计算出Input

SELECT  FY_CD, 
        PD_NO, 
        'Variance' INPUT, 
        SUM(CASE WHEN Input = 'Actuals' THEN HOURS ELSE -1 * HOURS END) HOURS
FROM    LABOR_TABLE
GROUP   BY PD_NO
  • SQLFiddle演示


 类似资料:
  • 问题内容: 我正在尝试提出一个将更新的MySQL查询…我可以做这样的事情吗? 问题答案: 通过将单引号放在“点-5”周围,可以将该表达式转换为纯文本字符串。不用引号就可以使MySQL看到您正在引用一个字段(点),并从其当前值中减去5。

  • 问题内容: 我想使用查询显示来自不同行的两个值。 这是表结构: 我想从日期2014-11-07减去日期2014-11-08。 输出应该像 问题答案: 您可以使用联接获取行,然后减去值:

  • 我们有一个场景,需要解析插入SQL并提取每个列的值。 现在列值提取很容易实现,但当值包含转义字符或逗号时,会导致问题。喜欢 ('jkl','mno','pq,aa'r') 这里是导致问题的第三个值<代码>'pq,aa'r' 通过使用regex,我们可以像这样提取这些数据。 值2 值2 我们正在使用JAVA正则表达式。我们高度赞赏任何其他出路。

  • 我试图从dfb中减去dfa,其中列映射基于第三个映射数据帧。在本例中,应从x1中减去B,从x2中减去A。 这可以通过循环和其他一些肮脏的方法来实现,但我想知道是否有更简洁的方法来实现这一点。 数据帧a 数据帧b 数据帧c 所需结果

  • 我使用的是PostgreSQL v9。6.6. 我正在运行以下SQL: 这将导致以下错误,因为列的索引不是唯一的。我不能添加索引,因为有一些存量数据不是唯一的。 错误:不存在与冲突规范匹配的唯一或排除约束 问:有没有办法在没有索引的情况下执行upsert语句? 谢谢

  • 我有以下数据框: 我想按和进行分组,并组合