Sql 如何避免在行中显示重复的值
我有一个查询,其中我尝试显示一周中两个站点之间最频繁的行程:Sql 如何避免在行中显示重复的值,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个查询,其中我尝试显示一周中两个站点之间最频繁的行程: SELECT startday AS Day, start_station_name, start_station_id, end_station_name, end_station_id, count(*) AS trip_counts FROM table GROUP BY startday, start_station_name, end_station_name, start_station_id, end_station_i
SELECT startday AS Day, start_station_name, start_station_id, end_station_name, end_station_id, count(*) AS trip_counts
FROM table
GROUP BY startday, start_station_name, end_station_name, start_station_id, end_station_id
ORDER BY trip_counts DESC
这是我当前的输出:
我不想重复具有相同“日期”的行,我只想按天显示具有较大行程计数的行。第8行不应显示,因为第1行已经有值“星期一”,且其行程计数值更大。您可以使用窗口功能:
SELECT s.*
FROM (SELECT startday AS Day, start_station_name, start_station_id,
end_station_name, end_station_id,
COUNT(*) AS trip_counts,
ROW_NUMBER() OVER (PARTITION BY startday ORDER BY COUNT(*) DESC) as seqnum
FROM table
GROUP BY startday, start_station_name, end_station_name, start_station_id, end_station_id
) s
WHERE seqnum = 1
ORDER BY trip_counts DESC
我只需将您的查询转换为视图(以便下次更容易访问): 然后,您可以轻松地使用以下查询仅访问具有最大行程计数的条目:
SELECT *, MAX(trip_counts) trip_counts
FROM vw_name
GROUP BY day
根据问题指南,请不要发布代码、数据、错误消息等的图像-复制或在问题中键入文本。请保留图像用于图表或演示渲染错误,这些问题无法通过文本准确描述。以下任一答案是否解决了您的问题?如果是,请接受。
SELECT *, MAX(trip_counts) trip_counts
FROM vw_name
GROUP BY day