gpt4 book ai didi

sql-server - 错误预测的 SQL Server 查询结果

转载 作者:行者123 更新时间:2023-12-01 06:19:17 24 4
gpt4 key购买 nike

我正在学习 SQL Server 考试,但我回答了这些问题,但我不明白为什么正确答案是正确的,以及你是如何得到这些答案的。

nr   naam  aantal  chef
1 Anouk 14 2
2 Hans 14 NULL
3 Ali 13 5
4 Kees 12 5
5 Ben 3 2

nr soort stad chef
1 cursus DenHaag 2
2 cursus Amsterdam NULL
3 congres NewYork 5
4 lezing Utrecht 5

nr werknemer reis aantal datum bedrag
01 1 4 8 17-04-2013 420,56
02 3 3 5 05-04-2013 825,80
03 1 1 5 10-04-2013 140,00
04 null 2 2 10-04-2013 156,75
05 4 4 8 17-04-2013 328,90
06 5 3 5 05-04-2013 560,45

这两个问题是:

一个。

SELECT naam
FROM werknemer
WHERE nr NOT IN (SELECT werknemer
FROM declaratie);

SELECT naam, COUNT(*)
FROM werknemer w LEFT OUTER JOIN declaratie d ON w.nr = d.werknemer
GROUP BY naam;

我的答案是:

a: Hans
b: naam count(*)
Anouk 2
Hans 0
Ali 1
Kees 1
Ben 1

但正确的答案是:

a: none 
b: naam count(*)
Anouk 2
Hans 1
Ali 1
Kees 1
Ben 1

谁能解释一下我可能错过了什么?

最佳答案

a) 是因为执行任何类型的 NOT IN (1,NULL,3,4,5) 都会返回一个 NULL 结果集,因为 SQL 无法说明任何给定的是否值不等于 NULL,因此有效地返回“我不知道”。对此有很好的解释 on Stack Overflow .

b) 错误的原因是您从 werknemer LEFT JOINing。因此,返回 werknemer 中的所有行 - 包括 HansCOUNT(*) 将返回与该个人相关的行数,因此 Hans 返回 1。您是否要 COUNT(d.werknemer) 然后Hans 将为 0,因为对于 Hans,所有 declaratie 列都将为 NULL,因为 JOIN 不会满足谓词。

关于sql-server - 错误预测的 SQL Server 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36768914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com