sql - 如何正确设置查询以在 SQL 中获取特定结果
问题描述
我需要从下面显示的表格中做 2 份报告。
我需要一份报告来查看执行报告时仍在上学的所有孩子
我需要一份报告来告诉我每个孩子在学校度过的小时数。对于仍在上学的孩子,当他们进入学校和当前时间时。
你能帮我为这两种情况正确设置逻辑吗?
详细解释:
例如,John 从 House 开始并在某个时刻去上学,几分钟后他去图书馆(School -> Library)。一段时间后,他再次从(图书馆->学校)离开,最后他又从(学校->房子)离开。其他人也是同样的故事。
现在我很难设置逻辑来获取这两种情况并正确设置查询。
提前致谢 :)
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #temp
GO
CREATE TABLE #temp
(
Person nvarchar(max),
src_location nvarchar(max),
dst_location nvarchar(max),
[time] datetime
)
GO
INSERT INTO #temp (person, src_location, dst_location, time)
VALUES ('John', 'House', 'School', '2018-08-31 08:53:55'),
('Peter', 'House', 'School', '2018-08-31 09:01:55'),
('John', 'School', 'Library', '2018-08-31 09:03:14'),
('Tina', 'Park', 'School', '2018-08-31 09:10:22'),
('John', 'Library', 'School', '2018-08-31 09:50:14'),
('John', 'School', 'House', '2018-08-31 00:48:14'),
('Tina', 'School', 'House', '2018-08-31 00:15:22'),
('John', 'House', 'School', '2018-10-16 08:22:32')
SELECT * FROM #temp
解决方案
我不是那么精通MSSQL。解决您的第一个问题的一般方法是查询每个用户的最新条目(GROUP BY [person]),然后过滤它们以查找 dst_location 等于 School([dst_location] = 'School')的人
我看到这并不完全有效,因为它仍然返回蒂娜,而她已经离开学校,请参阅http://sqlfiddle.com/#!18/0b1c8/24
推荐阅读
- python - Problem trying to install pillow 5.3.0 for python 3.7
- c - 微控制器上的时间测量不同
- r - R:我如何分配一个大向量
- ubuntu - Windows 10 Ubuntu WSL 无法显示 grep 输出文件名
- android - Android:从活动 onResume 检测呼叫状态
- mysql - 在coldfusion函数中使用sql查询的正确方法是什么
- python - 如何设置 Google API 凭据以通过 Jupyter 笔记本访问 AutoML API?
- python - 有没有办法在不打开 webdriver 窗口的情况下使用 selenium 打开 webdriver 选项卡?
- java - 注册课程 Java
- postgresql - Use result of one query to query another in Postgres