Sql 在图表上显示大量值的困难

Sql 在图表上显示大量值的困难,sql,sql-server,dotnethighcharts,Sql,Sql Server,Dotnethighcharts,我试图在图表上显示数据库中的一些记录。一分钟内保存的记录通常约为70条。在折线图上,这样多的记录看起来很疯狂,但是当用户的数据兴趣介于4小时间隔之间时,期望用户每分钟都请求查看记录,这将更加疯狂和不现实 我决定按分钟对记录进行分组,结果我陷入了查询中。 以下是我的查询示例: SELECT DISNTINCT YEAR(recievedon), MONTH(recievedon), DAY(recievedon), HOUR(recievedon), referenceprice FROM dbn

我试图在图表上显示数据库中的一些记录。一分钟内保存的记录通常约为70条。在折线图上,这样多的记录看起来很疯狂,但是当用户的数据兴趣介于4小时间隔之间时,期望用户每分钟都请求查看记录,这将更加疯狂和不现实

我决定按分钟对记录进行分组,结果我陷入了查询中。 以下是我的查询示例:

SELECT DISNTINCT YEAR(recievedon), MONTH(recievedon), DAY(recievedon), HOUR(recievedon), referenceprice
FROM dbname
WHERE recievedon >= '2015-06-05 10:30' AND recievedon <= '2015-06-05 10:50'
ORDER BY recievedon
选择连续的年份(接收时间)、月份(接收时间)、日期(接收时间)、小时(接收时间)、参考价格
来自dbname

其中receivedon>='2015-06-05 10:30'和receivedon如果我猜您使用的是MySQL,那么您可以使用
到秒()。以下给出了每分钟的平均参考价格,以及间隔内第一个价格的日期/时间:

select min(recievedon), avg(referenceprice)
from dbname
where recievedon >= '2015-06-05 10:30' AND recievedon <= '2015-06-05 10:50'
group by floor(to_seconds(receivedon) / 60) 
选择最小值(接收时间)、平均值(参考价格)
来自dbname

其中receivedon>='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon如果我猜您使用的是MySQL,那么您可以使用
to_seconds()
。以下给出了每分钟的平均参考价格,以及间隔内第一个价格的日期/时间:

select min(recievedon), avg(referenceprice)
from dbname
where recievedon >= '2015-06-05 10:30' AND recievedon <= '2015-06-05 10:50'
group by floor(to_seconds(receivedon) / 60) 
选择最小值(接收时间)、平均值(参考价格)
来自dbname

其中receivedon>='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon如果我猜您使用的是MySQL,那么您可以使用
to_seconds()
。以下给出了每分钟的平均参考价格,以及间隔内第一个价格的日期/时间:

select min(recievedon), avg(referenceprice)
from dbname
where recievedon >= '2015-06-05 10:30' AND recievedon <= '2015-06-05 10:50'
group by floor(to_seconds(receivedon) / 60) 
选择最小值(接收时间)、平均值(参考价格)
来自dbname

其中receivedon>='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon如果我猜您使用的是MySQL,那么您可以使用
to_seconds()
。以下给出了每分钟的平均参考价格,以及间隔内第一个价格的日期/时间:

select min(recievedon), avg(referenceprice)
from dbname
where recievedon >= '2015-06-05 10:30' AND recievedon <= '2015-06-05 10:50'
group by floor(to_seconds(receivedon) / 60) 
选择最小值(接收时间)、平均值(参考价格)
来自dbname

其中receivedon>='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon='2015-06-05 10:30'和receivedon使用简单的分组by
DATEPART
,而不考虑溢出。
SELECT
与戈登的答案完全相同

SELECT 
    MIN(ReceivedOn) AS Time,
    -- Assuming you need average price
    AVG(ReferencePrice) AS ReferencePrice
FROM
    dbname
WHERE
    ReceivedOn BETWEEN '2015-06-05 10:30' AND '2015-06-05 10:50'
GROUP BY
    DATEPART(YEAR, ReceivedOn),
    DATEPART(MONTH, ReceivedOn),
    DATEPART(DAY, ReceivedOn),
    DATEPART(HOUR, ReceivedOn),
    DATEPART(MINUTE, ReceivedOn)

使用简单的group by
DATEPART
,而不考虑溢出。
SELECT
与戈登的答案完全相同

SELECT 
    MIN(ReceivedOn) AS Time,
    -- Assuming you need average price
    AVG(ReferencePrice) AS ReferencePrice
FROM
    dbname
WHERE
    ReceivedOn BETWEEN '2015-06-05 10:30' AND '2015-06-05 10:50'
GROUP BY
    DATEPART(YEAR, ReceivedOn),
    DATEPART(MONTH, ReceivedOn),
    DATEPART(DAY, ReceivedOn),
    DATEPART(HOUR, ReceivedOn),
    DATEPART(MINUTE, ReceivedOn)

使用简单的group by
DATEPART
,而不考虑溢出。
SELECT
与戈登的答案完全相同

SELECT 
    MIN(ReceivedOn) AS Time,
    -- Assuming you need average price
    AVG(ReferencePrice) AS ReferencePrice
FROM
    dbname
WHERE
    ReceivedOn BETWEEN '2015-06-05 10:30' AND '2015-06-05 10:50'
GROUP BY
    DATEPART(YEAR, ReceivedOn),
    DATEPART(MONTH, ReceivedOn),
    DATEPART(DAY, ReceivedOn),
    DATEPART(HOUR, ReceivedOn),
    DATEPART(MINUTE, ReceivedOn)

使用简单的group by
DATEPART
,而不考虑溢出。
SELECT
与戈登的答案完全相同

SELECT 
    MIN(ReceivedOn) AS Time,
    -- Assuming you need average price
    AVG(ReferencePrice) AS ReferencePrice
FROM
    dbname
WHERE
    ReceivedOn BETWEEN '2015-06-05 10:30' AND '2015-06-05 10:50'
GROUP BY
    DATEPART(YEAR, ReceivedOn),
    DATEPART(MONTH, ReceivedOn),
    DATEPART(DAY, ReceivedOn),
    DATEPART(HOUR, ReceivedOn),
    DATEPART(MINUTE, ReceivedOn)


请编辑您的问题并使用您正在使用的数据库进行标记。请编辑您的问题并使用您正在使用的数据库进行标记。请编辑您的问题并使用您正在使用的数据库进行标记。请编辑您的问题并使用您正在使用的数据库进行标记。我运行了您的第一次编辑,出现以下错误:“datediff函数导致溢出。分隔两个日期/时间实例的DatePart数量太多。尝试将datediff与不太精确的datepart一起使用”。我运行了第二个sql,它给我的错误与第一个相同。@Chibuzo…你知道,表达式可以是分钟而不是秒。好的。第一个查询可以工作,但找到的所有行的引用价格都相同。第二个查询抛出以下错误:“Msg 8115,级别16,状态2,第4行算术溢出将表达式转换为数据类型datetime时出错。“我运行了第一次编辑,得到了以下错误:“datediff函数导致溢出。分隔两个日期/时间实例的DatePart数量太多。尝试将datediff与不太精确的datepart一起使用”。我运行了第二个sql,它给我的错误与第一个相同。@Chibuzo…你知道,表达式可以是分钟而不是秒。好的。第一个查询可以工作,但找到的所有行的引用价格都相同。第二个查询抛出以下错误:“Msg 8115,级别16,状态2,第4行算术溢出将表达式转换为数据类型datetime时出错。“我运行了第一次编辑,得到了以下错误:“datediff函数导致溢出。分隔两个日期/时间实例的DatePart数量太多。尝试将datediff与不太精确的datepart一起使用”。我运行了第二个sql,它给我的错误与第一个相同。@Chibuzo…你知道,表达式可以是分钟而不是秒。好的。第一个查询可以工作,但找到的所有行的引用价格都相同。第二个查询抛出以下错误:“Msg 8115,级别16,状态2,第4行算术溢出将表达式转换为数据类型datetime时出错。“我运行了第一次编辑,得到了以下错误:“datediff函数导致溢出。分隔两个日期/时间实例的DatePart数量太多。尝试将datediff与不太精确的datepart一起使用”。我运行了第二个sql,它给我的错误与第一个相同。@Chibuzo…你知道,表达式可以是分钟而不是秒。好的。第一个查询可以工作,但找到的所有行的引用价格都相同。第二个查询抛出以下错误:“Msg 8115,级别16,状态2,第4行算术溢出将表达式转换为数据类型datetime时出错。“