我需要澄清关键字“引擎”以及它背后的功能。我认为引擎是一个更大的东西——数据库的一个更小的组件。就像“汽车发动机”位于汽车内部一样。
那么 dwh 引擎可以插入更大的数据仓库吗?Olap引擎可以用作实际olap db的组件吗?
我在 Medium.com 上发现了这个数据景观图像,有 2 个不同的类别:olap db 和 olap 引擎。
由于它们具有重叠的功能,有什么区别?
我无法在hackerrank 上解决这个问题,不得不查找解决方案。我加入了错误的表格。
有4张桌子:
任务描述:
编写查询以打印在多个挑战中获得满分的黑客的相应hacker_id 和名称。
提交表字段:submission_id、hacker_id、challenge_id、score
挑战表字段:challenge_id、hacker_id、难度级别
我加入的方式:黑客+挑战,挑战+难度,挑战+提交。
select
hackers.hacker_id, name
from submissions inner join challenges on submissions.challenge_id = challenges.challenge_id
inner join difficulty on difficulty.difficulty_level = challenges.difficulty_level
inner join hackers on
challenges.hacker_id = hackers.hacker_id -- here is wrong part!
where difficulty.score = submissions.score and difficulty.difficulty_level = challenges.difficulty_level
group by hackers.hacker_id, name
having count( challenges.challenge_id)> 1
order by count( challenges.challenge_id) desc, hackers.hacker_id
然而,正确的方法几乎是一样的——除了我应该加入提交+hacker_id的黑客而不是提交+challenge_id的挑战。
正确的方法:
select
hackers.hacker_id,name
from submissions inner join challenges on submissions.challenge_id = challenges.challenge_id
inner join difficulty on difficulty.difficulty_level = challenges.difficulty_level
inner join hackers on submissions.hacker_id = hackers.hacker_id
where difficulty.score = submissions.score and difficulty.difficulty_level = challenges.difficulty_level
group by hackers.hacker_id, name
having count( challenges.challenge_id)> 1
order by count( challenges.challenge_id) desc, hackers.hacker_id
通过challenge_id加入提交+挑战与通过hacker_id加入提交+黑客背后的逻辑是什么?
为什么会产生不同的结果?黑客提交,所以无论我是加入挑战+提交+黑客还是提交+黑客+挑战......
使用 PostgreSQL 9.6。
该表有用户会话,我需要打印不同的非重叠会话。
CREATE TABLE SESSIONS(
id serial NOT NULL PRIMARY KEY,
ctn INT NOT NULL,
day DATE NOT NULL,
f_time TIME(0) NOT NULL,
l_time TIME(0) NOT NULL
);
INSERT INTO SESSIONS(id, ctn, day, f_time, l_time)
VALUES
(1, 707, '2019-06-18', '10:48:25', '10:56:17'),
(2, 707, '2019-06-18', '10:48:33', '10:56:17'),
(3, 707, '2019-06-18', '10:53:17', '11:00:49'),
(4, 707, '2019-06-18', '10:54:31', '10:57:37'),
(5, 707, '2019-06-18', '11:03:59', '11:10:39'),
(6, 707, '2019-06-18', '11:04:41', '11:08:02'),
(7, 707, '2019-06-18', '11:11:04', '11:19:39');
id ctn day f_time l_time
1 707 2019-06-18 10:48:25 10:56:17
2 707 2019-06-18 10:48:33 10:56:17
3 707 2019-06-18 10:53:17 11:00:49
4 707 2019-06-18 10:54:31 10:57:37
5 707 2019-06-18 11:03:59 11:10:39
6 707 2019-06-18 11:04:41 11:08:02
7 707 2019-06-18 11:11:04 11:19:39
现在我需要不同的非重叠用户会话,所以它应该给我:
1. start_time: 10:48:25 end_time: 11:00:49 duration: 12min,24 sec
2. start_time: 11:03:59 end_time: 11:10:39 duration: 6min,40 sec
3. start_time: 11:11:04 end_time: 11:19:39 duration: 8min,35 sec