我试图做从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