2011-05-09 24 views
0

我下面的表格有選擇分鐘(值)形成的每一天

DATE_TIME,data_value

date_time    data_value 
----------------------- ---------------------- 
2011-03-28 15:05:29.000 20 
2011-03-28 15:55:39.000 40 
2011-03-28 16:25:45.000 30 

2011-03-28 23:37:11.000 10 
2011-03-29 04:43:12.000 44 
2011-03-29 05:13:18.000 55 
2011-03-29 05:28:21.000 52 
2011-03-29 05:48:25.000 23 
2011-03-29 06:13:30.000 8 
2011-03-29 07:03:40.000 34 
2011-03-29 08:34:01.000 25 
2011-03-29 09:34:20.000 35 
2011-03-29 09:49:23.000 23 
2011-03-30 16:00:55.000 20 

我想獲得在SQL每個日期的最低值:

​​

有什麼建議嗎?

+2

哪個數據庫平臺? – 2011-05-09 10:41:54

回答

0

嘗試那些:

SELECT FROM_DAYS(TO_DAYS(data_time)) AS dt, min(data_value) FROM table GROUP BY TO_DAYS(NOW()) 

SELECT DATE_FORMAT(data_time,'YYY-MM-01') AS dt, min(data_value) FROM table GROUP BY dt 
+0

這是LINQ到SQL? – user744710 2011-05-09 10:44:56

+0

這是MySQL的(我誤以爲這個問題被標記爲MySQL的) – peufeu 2011-05-09 11:09:42

0

工作的呢?

SELECT date_time, MIN(data_value) 
FROM TABLE 
GROUP BY date_time 

對不起,現在你已經格式化了數據,顯然是不行的!您需要將一個函數應用於date_time,以便剪切日期並忽略時間部分。

在MySQL(和其他如DB2),你會怎麼做:

SELECT DATE(date_time), MIN(data_value) 
    FROM TABLE 
    GROUP BY DATE(date_time) 

對於SQL Server,這看起來像它應該工作,請能有人證實:

SELECT CONVERT(varchar(10), date_time), MIN(data_value) 
FROM TABLE 
GROUP BY CONVERT(varchar(10), date_time) 
+0

這隻返回我2011-03-29 06:13:30.000 8 – user744710 2011-05-09 10:45:36

+0

您還需要忽略了group by子句中的時間部分... – meriton 2011-05-09 10:51:55

+1

我使用SQL Express的這麼日期不applyable – user744710 2011-05-09 10:51:58

0

喜歡的東西

select TO_DAYS(date_time) as dt, min(date_time) from xxx group by dt; 
0
select d(date_time), min(data_value) 
from table 
group by d(date_time) 

其中d是fu從date_time提取日期部分。 (檢查您的SQL參考手冊中的函數名稱)。

在Oracle的SQL函數是trunc

2

在SQL Server 2005+:

WITH ranked AS (
    SELECT 
    date_time, 
    data_value, 
    rownum = ROW_NUMBER() OVER (
     PARTITION BY DATEADD(day, DATEDIFF(day, 0, date_time), 0) 
     ORDER BY data_value 
    ) 
    FROM atable 
) 
SELECT 
    date_time, 
    data_value 
FROM ranked 
WHERE rownum = 1 
0

您使用試試這個

select min(val),substring(date,1,10) from table group by substring(date,1,10) 
0
SELECT (ord_date), min([qty]) 

     FROM [pubs].[dbo].[sales] 

    group by [ord_date] 

    order by ord_date