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

将行转置/旋转到列和总和

元胡媚
2023-03-14
问题内容

这是我的查询

SELECT * 
FROM requirementRange

PeakRangeDaysOfReq列为nvarchar数据类型,Total为INT数据类型

表格如下

PeakRange DaysOfReq总计
1-3.99> 2天2
9.01+第2天3
1-3.99天0 1
4-5.99天0 1
6-8.99第2天2
9天0 1
9.01+天0 1

预期结果

PeakRange Day 0 Day 1 Day 2> 2天合计
1-3.99 1 0 0 2 3
4-5.99 1 0 0 0 1
6-8.99 0 0 2 0 2
9 1 0 0 0 1
9.01+ 1 0 3 0 4

在这里,我需要将输出从行转换为列,并找到总计并将其放置在每个范围的最后一列中。


问题答案:

您应该可以使用类似于以下内容的东西:

select 
  peakrange,
  coalesce([Day 0], 0) [Day 0], 
  coalesce([Day 1], 0) [Day 1], 
  coalesce([Day 2], 0) [Day 2],
  coalesce([>2 Days], 0) [>2 Days],
  peak_Total
from
(
  select peakrange, daysofreq, total,
    sum(total) over(partition by PeakRange) peak_Total
  from requirementRange
) d
pivot
(
  sum(total)
  for daysofreq in ([Day 0], [Day 1], [Day 2],
                    [>2 Days])
) piv
order by peakrange;

参见带有演示的SQL Fiddle



 类似资料:
  • 问题内容: 我有一个名为df的Pandas DataFrame,看起来像这样: 我正在尝试获得: 我尝试使用: 要么: 但我不断收到: pandas.core.base.DataError:没有要聚合的数字类型 我该怎么办? 问题答案: 另一种执行此方法的方法是使用,然后使用转换列表值到单独的列

  • 这是期望的输入和期望的输出。我不熟悉SQL或Presto中使用的术语,文档似乎指向使用,但我认为这里的问题是动态创建列,但我很好奇在列已知且有限的情况下是否可以这样做。 则成为: 我能得到的最接近的方法是使用获取一组,可以在输出中一次提取一个。然而,理想的解决方案是不必显式列出最终要输出的每个,而是分解或滚动出的所有键:

  • 所以我在图像视图上做了一些旋转和翻译。据我所知,图像视图并没有真正在任何一个位置之后,你必须在动画完成后将其实际移动到那里。所以我尝试移动的图像视图称为标记,它设置在其原始位置和有它的起始位置。移动或翻译后,我调用来处理移动或旋转。这似乎有一半的时间完成了预期的结果...不确定我做错了什么,但它与我想要的方式不一致。

  • 我试图通过DF透视数据,但是我对如何继续下面的操作感到困惑。 以上是我的原始数据,我希望我的数据帧枢轴有状态列的总数,如下所示。 MP已关闭已解决分配 然而,我不确定如何在pandas中实现,因为pivot只反映状态的总计数,而不是每个值。

  • 问题内容: 我有下表,该表为每个用户提供了多个电子邮件地址。 我需要将其展平为用户查询中的列。请根据创建日期为我提供“最新”的3个电子邮件地址。 问题答案: 使用从模块。

  • 问题内容: 我正在尝试将行转置为列,但是没有找到任何好的答案。 这是我想要的示例: 输入表: 输出将是: 问题答案: 您需要枚举值以对其进行透视: