1
nooper 2017-07-21 00:37:06 +08:00 via iPad
答案呢?我就不懂好久不写 sql
|
2
nooper 2017-07-21 00:44:14 +08:00 via iPad 1
写文章要写全.写半拉感觉是在装.
|
4
litter123 2017-07-21 01:12:55 +08:00
都不懂,蛤蛤
|
5
akira 2017-07-21 02:07:11 +08:00
2 不会
|
6
konakona 2017-07-21 02:09:33 +08:00
join 那个 ok
第二题不会... null 那个没看懂在问什么,题目没明白... |
7
shiji 2017-07-21 04:23:24 +08:00
前几天有人问我这么一个 SQL:
SELECT residents.*,sum(charges.amount) as amount_charged,sum(payments.amount) as amount_paid,(sum(charges.amount) - sum(payments.amount)) as amount_due FROM residents LEFT JOIN payments on payments.resident_id=residents.id LEFT JOIN charges on charges.resident_id=residents.id GROUP BY residents.id 问我为什么付款总额和账单总额算出来的根本不对 |
8
ericbize 2017-07-21 07:28:56 +08:00 via iPhone
一知半解
|
9
huijiewei 2017-07-21 07:40:11 +08:00 via iPhone
看完三个题目,发现其实出题人也是一知半解
|
10
odirus 2017-07-21 07:40:30 +08:00 via Android
题不完整吧,第三道题应该考察 count(1) 和 count(列) 在没有查询条件和有查询条件情况下的效率问题。
|
11
bin456789 2017-07-21 07:45:52 +08:00 via Android
讲真,第二题能用窗口函数计算?
这题我可能只会用游标,这算窗口函数吗? |
12
odirus 2017-07-21 07:47:23 +08:00 via Android
另外这三道题都弄懂了,也只能算 《数据库系统概念》中的初级篇,所以意识到问题,就赶紧买书回来学习吧
|
15
woshixiaohao1982 2017-07-21 08:31:35 +08:00 1
没有意义的题目,SQL 全称是 Structured query language 也就是结构化查询语言,
关系型数据库 描述的是数据的关系,可惜这些年 SQL 真的是被人用歪了,连业务都写进 SQL 里面了 简直了.. |
16
woshixiaohao1982 2017-07-21 08:35:58 +08:00 9
有时间研究 SQL 不如研究数据库的存储原理跟底层的索引算法特性,
对这些深层次的东西,有一定程度上的把握,对日常开发实践是非常有帮助的, 至于 SQL |
17
ebony0319 2017-07-21 08:41:38 +08:00
第一题略。很多人都能答上来,但是如果问 exists 与 join 的区别才有点深度。
第二题需要用到 with 一个递归。 第三题 count ( A ),A 的数量,count (*)全部的数量包括 A,B,C....和 Null 表的全扫描,count ( 1 )全部数量不会表的的全扫描(这里好像是这样,如果错了清指出)。 |
18
mxmai 2017-07-21 08:47:19 +08:00
三道题如下:
1.select * from t1 join t2 on t1.a = t2.a and t1.b = t2.b 和 select * from t1 left join t2 on t1.a = t2.a and t1.b = t2.b 这两个在结果集上有什么区别? ( 这个其实就是在问内连接和外连接的区别) 2.有一张表记录了用户登录的 ID 和时间,怎么找出每一个用户连续登录的天数?(这是个关于窗口函数的问题) 3.select count(a) from t1 和 select count(1) from t1 有什么区别?(null 的含义) -- |
19
mxmai 2017-07-21 08:52:10 +08:00
三道题如下:
1.select * from t1 join t2 on t1.a = t2.a and t1.b = t2.b 和 select * from t1 left join t2 on t1.a = t2.a and t1.b = t2.b 这两个在结果集上有什么区别? ( 这个其实就是在问内连接和外连接的区别) -- inner join 会返回满足关联条件的记录,而 left join 除了返回满足关联条件的记录外,还会返回基表(t1)中不满足关联条件的记录。 2.有一张表记录了用户登录的 ID 和时间,怎么找出每一个用户连续登录的天数?(这是个关于窗口函数的问题) -- oracle 中有分析函数还知道大概怎么统计,mysql 刚想了下,是否可以用用户变量来统计(哭笑脸) 3.select count(a) from t1 和 select count(1) from t1 有什么区别?(null 的含义) -- count、max、sum 等聚合函数会自动过滤 null 值,所以当 a 中含有 null 值时,count(a) != count(1),即 count(a) <= count(a) ps, 刚才手贱发了一条,结果还不能删。 |
20
xiaojunjor 2017-07-21 09:09:06 +08:00
第二个不会,完全没 get 到点。。
|
21
2ME 2017-07-21 10:35:50 +08:00
第二个不会.. 另外两个原来自己试过区别
|
22
snopy 2017-07-21 12:20:59 +08:00
##COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值还是非空值。
##COUNT(column)对特定列中具有值的行进行计数,忽略 NULL 值。 PS:曾看过一篇关于测评 COUNT(column)和 COUNT(1)运行效率孰高孰低的帖子,不知道有人关注过没 |
25
amghost 2017-07-21 18:02:05 +08:00 via iPhone
第二题不会,只会捞出来在程序里运算
|
26
wenzhoou 2017-07-22 09:45:52 +08:00 via Android
话说第二题这样的需求在数据库里面计算好吗?不会导致数据库性能出问题吗?比较好奇。
|