我試圖做從SF Bay Area Bike Share Kaggel數據集團通過使用T-SQL
數據的一些SQL當我運行該SQL最小值和最大值日期:
/****** Select Bikes ******/
SELECT count(t.[id]) as TripCount
,t.[bike_id]
FROM [dbo].[trip] t
Group By t.[bike_id]
having count(t.[id]) < 25
Order By TripCount asc
我得到這樣的結果:
+-----------+---------+
| TripCount | bike_id |
+-----------+---------+
| 6 | 876 |
| 18 | 323 |
| 20 | 565 |
| 24 | 476 |
| 24 | 697 |
+-----------+---------+
當我真正想要的是這樣的:
+-----------+---------+------------+------------+
| TripCount | bike_id | Min_date | Max_date |
+-----------+---------+------------+------------+
| 6 | 876 | 2014-05-22 | 2014-05-27 |
| 18 | 323 | 2013-08-30 | 2013-09-07 |
| 20 | 565 | 2013-08-29 | 2013-09-07 |
| 24 | 476 | 2013-08-29 | 2013-09-07 |
| 24 | 697 | 2013-10-15 | 2013-12-20 |
+-----------+---------+------------+------------+
其中最小日期&最大日期分別給出第一個&自行車旅行的最後日期。
我可以手動爲每個自行車通過運行該這樣做:
SELECT
min(cast([start_date] as date)) as Min_Date
,max(cast([start_date] as date)) as Max_Date
,[bike_id]
FROM [dbo].[trip]
where bike_id = '697'
Group By bike_id
我嘗試此查詢:
/****** Script for SelectTopNRows command from SSMS ******/
SELECT
count (t.[id]) as TripCount
,min(cast(t.[start_date] as date)) as Min_Date
,max(cast(t.[start_date] as date)) as Max_Date
,[bike_id]
FROM [dbo].[trip] t
Group By count (t.[id]), bike_id
,顯然得到了以下錯誤: 不能使用聚合或用於GROUP BY子句的GROUP BY列表的表達式中的子查詢。
就不太清楚如何來包裝我解決此頭...
THX固定我的表! SE真的應該增加至少在這個社區中使用表的能力! – kiltannen