我在SQL中有这样一个表:
| | | |
| --|--|--|
| 1 |user1| 2023-07-10 2023-07-10|
| 2 |user1| 2023-06-25|
| 3 |user2| 2023-06-21 2023-06-21 2023-06-21|
| 4 |user3| 2023-06-27|
| 5 |user3| 2023-07-11 2023-07-11 2023-07-11|
| 6 |用户4| 2023-07-14 2023-07-14 2023-07-14|
| 7 |user2| 2023-07-16|
| 8 |user1| 2023-07-17|
| 9 |用户4| 2023-07-15|
| 10 |使用者5| 2023-03-06|
我需要计算每个连续日期的差异,但每个用户(类似这样):
| | | | |
| --|--|--|--|
| user1| 2023-06-25| 2023-07-10 2023-07-10| 15 |
| user1| 2023-06- 10 2023-06-10 2023-06-10| 2023-07-17| 7 |
| user2| 2023-06-21 2023-06-21 2023-06-21| 2023-07-16| 25 |
| user3| 2023-06-27| 2023-07-11 2023-07-11 2023-07-11| 14 |
等等。我已经在网上搜索过了,但是只找到了没有每个用户的解决方案。
更新:
我到达这个查询是非常好的,但输出有多次相同的日期作为开始,我不想要的:
SELECT
p1.id AS id,
p1.name AS user,
p1.date AS date1,
p2.date AS date2,
DATEDIFF(p2.date, p1.date) AS date_difference
FROM prova p1
JOIN prova p2 ON p1.name = p2.name AND p2.date > p1.date
ORDER BY p1.name, p1.date;
SQL Fiddle
2条答案
按热度按时间ubby3x7f1#
找到了解决方案:
SQL Fiddle
zz2j4svz2#
使用这样的查询
样品
http://sqlfiddle.com/#!9/aa0faf69/34