经过一些帮助MSChart-强制从Origin绘制折线图]后,我设法将以下MSSQL查询放在一起,以用于折线图。
WITH AllDays
AS
(
SELECT CAST('20120101' as datetime) AS days
UNION ALL
SELECT DATEADD(dd, 1, days)
FROM AllDays
WHERE DATEADD(dd, 1, days) < cast('20120201' as datetime)
)
SELECT
MIN(ad.days) AS Date,
ISNULL((SELECT SUM(value) FROM jobs WHERE dateinvoiced >= CAST('20120101'
as datetime) AND dateinvoiced <= ad.days)/100,0) AS Value
FROM AllDays AS ad
LEFT JOIN jobs AS j
ON( ad.days = j.dateinvoiced )
GROUP BY ad.days
但是,我有一个问题。该查询返回类似以下内容的内容:
Date | Value
2012-01-01 00:00:00.000 | 0
2012-01-02 00:00:00.000 | 0
2012-01-03 00:00:00.000 | 1234
2012-01-04 00:00:00.000 | 1234
2012-01-05 00:00:00.000 | 1234
2012-01-06 00:00:00.000 | 57312
2012-01-07 00:00:00.000 | 57312
2012-01-08 00:00:00.000 | 90812
这意味着我每天都在阅读,而实际上每个不同的值仅需要一行。在每种情况下,我都希望它第一次出现,因此对于上面的示例,我希望查询返回:
Date | Value
2012-01-01 00:00:00.000 | 0
2012-01-03 00:00:00.000 | 1234
2012-01-06 00:00:00.000 | 57312
2012-01-08 00:00:00.000 | 90812
我看了看似是基于类似前提的几个问题,但是所有答复都是针对特定情况而量身定制的(有些甚至使用LIKE来挑选请求的结果),并且似乎不适合此情况。当然,它们也很难适应我已经拥有的查询。
有任何想法吗?提前致谢。
编辑:对不起躲闪的桌子,我的第一次尝试是更糟糕。
试试这个。您已经完成了困难的部分。您只需要分组Value
并获得与之关联的第一个(即MIN
)Date
:
WITH AllDays AS (
SELECT CAST('20120101' as datetime) AS days
UNION ALL
SELECT DATEADD(dd, 1, days)
FROM AllDays
WHERE DATEADD(dd, 1, days) < cast('20120201' as datetime)
), V AS (
SELECT
MIN(ad.days) AS Date,
ISNULL((SELECT SUM(value) FROM jobs WHERE dateinvoiced >= CAST('20120101'
as datetime) AND dateinvoiced <= ad.days)/100,0) AS Value
FROM AllDays AS ad
LEFT JOIN jobs AS j ON (ad.days = j.dateinvoiced)
GROUP BY ad.days
)
SELECT MIN(Date) Date, Value
FROM V
GROUP BY Value;
下面是一个实现: 下面是一个示例用法来检查可操作性:
问题内容: 给定这样的假设查询: 并有一个类似于下面的表格: 所需结果: 有什么方法可以使用GROUP BY和LIKE语句(LIKE“ silver”,LIKE“ gold”,LIKE“ platinum”等)对这些条目进行分组? 问题答案: 您可以使用: 某些数据库允许您在中使用列别名。
我有一个这样的数据框: 看起来像这样: 我的目标是对列和中具有相同值的行进行分组,并以如下方式合并列的内容: 如您所见,列和中具有相同项的行将被合并,而如果至少有一行不同,它们将保持原样。我的想法是使用和函数,如下所示: 但是Python返回错误消息: 你能告诉我我的代码有什么问题吗?为了实现我的目标,我应该写些什么? 注意:我不关心可以丢弃的列会发生什么。
有没有非终端版本的或其他一些简洁的方式来流式传输生成的Map条目/值? 我发现自己想在分组后流过值但我能想到的最好的方法并不漂亮:
问题内容: 这就是我想要做的。假设我有这张桌子t: 对于每个ID,我想选择包含最小record_date的行。所以我会得到: 我看到的唯一解决方案是假定所有record_date条目都是不同的,但在我的数据中并非如此。使用带有两个条件的子查询和内部联接将为我提供某些ID的重复行,这是我不想要的: 问题答案: 怎么样: 这将获取每个ID的最短日期,然后基于这些值获取值。唯一的重复项是同一ID的最小r
问题内容: 假设我有一个这样的列表: 我如何最优雅地将其分组以在Python中获得此列表输出: 因此,这些值按次值分组,但顺序保留下来。 问题答案: