Mysql我想按日期进行分组代码需要进行哪些修改?还请懂的大佬指点一下,谢谢!

========= 5年之后再次更新 =========

五年啦!不知不觉竟然已经过去这么多年了,曾经青涩又热血的我现在都已经工作三年快成为老油条了。其实在毕业之后对这门课又有了新的理解。总想找机会来更新一下答案,但就是——懒!今天看了一下这个问题下的答案,发现我的回答赞数居然是最多的,受宠若惊。重新审视了一下自己的答案,发现字里行间都透露出了一种“明明都这么努力了都没有好结果”的愤怒。为了不误导学弟学妹们,我决定再次更新一下这个答案。

有些人觉得这门课很好,有些人却觉得在CMU众多神课中这只能算是一门普普通通的课,有些人甚至不遗余力地黑这门课(比如五年前的我)。我觉得之所以产生这样的差别,是因为大家对这门课的定位可能产生了偏差。

我觉得这门课的定位应该是一门实践课而不是一门普通的学习课。区别在于,你是学过了这些知识,掌握得很熟练之后,才上这门课,通过这门课的project去测试和评估你是否真正掌握了;而不是说我想学这些知识,才去上这门课。这门课看似是可以学习到Map Reduce,Spark,分布式系统,数据库等等高大上的知识。但是这些知识中任何一个都是在CMU中其它的课要花一个学期甚至两个学期才能掌握的。比如说分布式系统(Distributed System),CS和ECE学院都有开设,神课之一。数据库,Database System,也是神课之一,ECE学生甚至很难选上。而且在这之后还有Advanced Database System。这些知识花一个学期甚至都不能完全学懂,在CC中却全部包含了进来。诚然,在每个project开始之前都会让你去阅读一些资料,还要做Quiz。但我觉得这只能作为复习的材料,用作学习一个先前没有了解过的知识,时间和深度是远远不够的。所以这导致的一个结果是,当时我也是按照这门课上的知识把project做出来了,分还挺不错的,但是当时并不了解自己做的是什么,为什么要这样做。过了几年后回想起来才恍然大悟:“啊!原来是这样!“

打个比方,就比如说有一个人之前从来没有锻炼过,身子骨弱,想去参加一些锻炼。他觉得跑步,游泳和骑自行车是很理想的锻炼方式,正好有一天他发现铁人三项这个比赛包含了这些项目,于是他报名了这个比赛,想通过这个比赛来学习这些健身方式。那结果肯定是作大死,跟别人的差距十万八千里甚至完不成比赛。因为别人都是跑步游泳骑行练过几年之后有了深厚的根基才来参加这个比赛,是通过这个比赛来评估自己实习的而不是通过这个比赛来“学习“的。

我觉得CC也是一样,大家要把CC当成是一门考试而不是一门传统意义上的课。当你系统学习过分布式系统和数据库等等知识之后,才去通过这个课来运用自己所学的知识实现各种各样的项目。转专业的学生和CS功底比较差的学生实在不建议第一个学期就上这门课。当年我就是第一个学期就上了这门课,所以十分痛苦。就像没有锻炼过的人,在铁人三项的比赛中再怎么努力,意志再怎么坚定,也跑不过那些有功底的选手。这也是我当初那么愤怒的原因吧,现在看来只能算是“无能狂怒“了。

这门课的project说实在话确实是挺不错的。我现在想如果当年在第二或者第三个学期才去上这门课,也许会更游刃有余,也许会学到更多更有用的知识,而不是知其然不知其所以然。也希望后来的学弟学妹们能够对这门课的定位有个更清晰了了解。然而五年过去了,这门课每个学期也都在改变,我也不知道现在这门课到底变成什么样了。但是我觉得每个人都要对自身的水平有个底数,不要为了去上神课而上神课。每个课都有适合上和不适合上的人,也有适合上和不适合上的时间点。CMU每一个学分都是挺珍贵的,希望大家能够在这短暂的一两年中合理安排自己的课程计划,不要浪费CMU这么好的学习资源。

但是话又说回来,最矛盾的地方在于,Fall入学的学生一般来说12月之前就要找实习,过了圣诞之后坑位就不多了。而转专业的学生刚入学又完全没有什么能够写在简历上的项目,找实习没有竞争力,所以想去上一些能够往自己简历上填满项目的课,CC就是其中之一。但是CC却又是最不适合转专业没有CS基础的人第一个学期就上的课。到底是学知识重要,还是找工作重要,希望大家好好思考这个问题吧。(对于转专业的硕士生来说,当然是找工作更重要啦!很大部分的人来美转CS不就是为了进大厂拿大包的吗)

========= 更新 =========

之前的答案,后来又想了很多,黑TA黑得有点过了,说CC的TA是想“我真的非常想看他们痛苦地不断踩各种坑又从坑里爬起来的挣扎的样子”,感觉是挺过分的,还加黑加粗加下划线了,伤到了不少当CCTA的小伙伴的心,在这里先道个歉了。但是我也不打算改以前的答案了,毕竟说出去的话泼出去的水,要为自己的言行负责,留在下面也算是自己的一个心路历程。

昨晚跟这次的TA 聊了大半个通宵,感觉自己确实地图炮开得有点广,伤及了一些兢兢业业想要努力改善这们课还有对学生真的好的人。而且因为自己想要看到别人受苦而认为别人也那样想也很不妥,可能是因为我这个人比较坏吧~所以就这样想了。但我写本文的本意就是避轻就重,专挑不好的方面讲,得罪人也再所难免。不过通过这次对话也再次印证了这门课的不合理性,TA辛辛苦苦干了一学期,学生累死累活撑到学期结束,结果谁也不讨好谁。学生觉得TA不干事,TA觉得学生难伺候,就是这一种怪现象。

为什么呢?我们觉得,是因为CC针对的人群不明确所致。转专业的学生有一大堆新东西要学,跟不上。学过人的驾轻就熟,一下子就做出来了。TA一看,怎么这么简单刚放出来就立马有人做出来了还跑那么高分,弄难一点再难一点。而且生活中有些事就像是常理一样,觉得不说大家都懂。这就容易产生误解了。比如说前段时间看到一个男女生搓澡的区别,男生搓澡只要搓两面,女生搓澡居然要搓四面。男生就觉得世界上所有人搓澡都只搓两面,女生就觉得搓澡搓四面不是常理吗?当时那个人发了公众号之后,居然还引起了不小的轰动。所以说,一方面,有些坑TA可能也想不到居然还有人会跳这种坑。另一方面,学生也会想“这么简单的事直接说出来不就行了吗,为什么就是不说”(当然,真的就是有TA明明知道大家都卡在哪里但[就是不说]!)

我们觉得解决方案,第一是就是像213那样,针对新手开设,把Load和难度降低,而且CC之后还有一门叫Advanced CC的,也是学Cloud,也是Majd的课,而且就我接触这两门课的经验来看,ADCC上面的阅读资料跟CC Quiz所要阅读的资料的重合性很大,完全没必要在CC这边弄得很难,然后在ADCC这边再把这些难的东西拿出来炒冷饭。我觉得可以把CC一些难的Project转移到ADCC上,这样既可以让人先了解一下Cloud Computing到底是个什么东西,不感兴趣或跟不上的同学也不至于爬着上完一学期,又可以让感兴趣或者想要深入了解的同学继续上ADCC来挑战更难的Project。

第二就是针对高端玩家。像DS那样,有严格的前置课程规定,要不就在课程介绍中写个大大的Warning,直接劝退菜鸟,然后去掉Project 0这种一周入门Linux AWS Azure的Project。一周入门这些,对于新手来说来不及消化,对于四年CS专业的人来说又非常鸡肋,还不如不要。然后就可以在认定同学都是有基础不会自己去踩各种奇奇怪怪的坑的前提下设计Project。

为什么很多人认为CC跟213以及OS等神课无法相提并论?我觉得就是因为Majd太想包罗万象了,每年都新增不少新东西。有一次我跟师兄聊CC,聊了半天他以为我一直聊的是DS。新东西多了,有些东西可能TA都不甚了解,做出来的Project稳定性自然不够好。所谓术业有专功,这门课的重点在哪呢?一开始我以为是学的是Mapreduce,再接着我以为是AWS培训班,紧接着是突然变得特别难的数据库Sharding和分布式系统并发。中间穿插着Hive,Impala和Redshift三合一,跟着writeup操作一下莫名其妙就完成了,都不知道这些是些什么东西,只觉得好不容易有个Project能水过高兴就好。最后好像又要比较一下各种大数据框架,Spark, Kafka听起来高大上,“终于能写到简历上了!”至于Team Project说是要把所有的东西融合起来,做个包含前后端的“至于AWS的Twitter分析系统”,然后一开始大家都互相问“什么是框架”。Hbase 基本的API都没熟悉Live Test就开始了。总之如果有人问我CC主要学了什么,我还真难答上来。

自己是希望CC这门课越来越好的,但至于Majd要怎么变,就不得而知了。我应该还会继续更新,争取给以后想选CC课的人作个好的参考。

========= 原答案 =========

经历过15FALL CC的人来说一下看法

之前上这门课,我包括我寝室另外两人,很痛苦很痛苦(这个很大部分是因为我们都是转CS的,基础薄弱,而且第一学期就作死选CC,这个稍后说),以至于每个周日(一般都是周日due)连饭都吃不上。而且每次due完之后我们三个人都要开会讨论为什么选这个课。但是上完这个课之后,感觉是脱胎换骨了一样,好像学到了很多东西。当时有个好友也申请上了下学期的TA,我就笑称他是上学期去讨伐恶龙的战士,在杀掉恶龙后却变成了下学期的恶龙。其实就连我也想,如果我是下学期的CC TA的话,我也会“点到为止”地让学生们“去尝试不同的东西(踩各种坑)”,因为”只有试过了才会对知识更加了解呀!”,“成长怎么会不经历痛苦!”。

但是,第一,这样对学生们真的好吗?

第二,真的学到了很多东西吗?真的学到了很多东西吗??

我想了很久这些问题,现在就给大家说说我的看法:

第一,假如你站在一个迷宫里面,四面八方都是路,其中只有一些路是通向终点的,另外一些路甚至不知道通向什么地方。这时候你去问TA,TA说:“你可以都尝试一下每条路哦,就算达不到终点,那你也掌握了‘这条路达不到终点’的这个知识啊,而且还很可能在路上捡到西瓜芝麻什么的哦!” 如果是你,你会怎么做?你敢花大力气在一条路上一路走下去吗?你怎么知道这条路是不是死路呢?

为什么一开始就不告诉我们哪条路可以走?我觉得老师和TA就应该是领路人,虽然不是司机,可以载你走完这条路,但是起码可以告诉你这条路是可以走下去的,是付出与收益比最高的,告诉你“你只要沿着这条路努力奔跑就行了!”这样剩下来的才是个人的努力问题。而不是在选错路,付出比别人更多努力之后,发现还不如那些一开始就选对路的人付出却很少的人(虽然可能他们自己也不知道自己选对了路)。

有些人说这门课很接近实际的工作环境,让你自己去搜索和解决各种可能在工作中出现的奇奇怪怪的问题。拜托,这门课叫“Cloud Computing”,不是“How to get out of 坑”,不是“Prepare for working environment”。而且就是为了在工作中少踩坑,不是应该多学到知识吗,多认清楚更多的坑,多知道什么该干什么不该干吗?“为了让你提前准备好在工作中踩坑而现在多体验踩坑的感觉”这是一个什么奇怪的逻辑?

退一步讲,好,我愿意在挫折中成长,我愿意尝试不同的路。但是这门课:第一,有严格的Budget限定。第二,有严格的Deadline,而且没有Grace day! 这让每个愿意多尝试的学生都要面临受到惩罚的威胁。一方面想要学生多尝试,一方面又严格限定budget和时间,这不是矛盾的么。而且这门课每周都有一个Quiz,每次光这个就会花掉你半天到一天的时间去看很多资料,总共有12个Quiz,一共占25分(这一届是20分)但是平均分只有60%~70%,所以光这个就要扣差不多十分,这意味着拿A已经很难了,再在其它地方出点差错,拿个C,可能连书都没得读了(CMU要求总绩点在B以上,C以后就要被退学了)

而且Majd老师对于作弊的教条就是“宁可错杀一千,也不放过一个”,所以经常会出现一些莫名其妙的警告邮件。只要你在同一个时间同一个IP开始做,或者答案或Code相似,都有可能收到这种警告邮件,目的就是威慑你让你放弃甚至有一点和别人合作的想法。

第二个问题才是最重要的,真的学到了很多东西了吗?我们容易产生错觉的地方在于,只比较了收入,而忽视了成本。对于15213,你可能每周花15小时学到了15小时的东西。对于CC,你可能每周花40小时,但只学到了20小时的东西。确实,学到的东西多了啊,但是性价比呢?CC最不合理的地方就是本来明明可以很简单就解决的东西,偏偏就是不告诉你,偏偏要弄得很花时间才能解决。

而且有些人走出了迷宫之后,可能会认为自己收获了很多,“我熟悉这条路上各个地方的坑,知道哪里有西瓜芝麻”,但殊不知,自己选的路尽管能出去,却是最远的,有很多别的路上就没有的坑。

新东方(不要吐槽新东方,一线的老师都是超级有水平的)的陈虎平老师说过:“站在巨人的肩膀上才能看得更宽,走得更远。” 为什么CCTA就不把自己上的这个课的心得体会跟大家分享一下呢?为什么觉得公开Report,每个人都会拿满分?换句话说,我们的目标不就是让每个人都尽量地获取这门课所能学到的知识从而获取更高的分数吗?非要辛辛苦苦学的才算知识,轻松能学到的就不是知识了?我想,如果我当TA,我不告诉他们什么地方有坑,让他们走自己以前踩过的坑,那么充其量他们也只能达到我当时的高度,或者只是比我高一点点。但是如果我把我上这门课的心得体会告诉他们,那他们就能够超越我走得更远,学到更多的东西,这不是教育的初衷吗?

每年的CC学生,每年踩同样的坑,每年出来的水平都一样。

明年的CC学生,站在前一年学长的肩膀上,水平越来越高。

在这一点上,我力顶小土刀,我不仅支持他写博客,而且我自己也竭尽所能帮助了一些这学期上CC的人,我也打算自己也写一个类似CC Writeup的博客,说一下自己的心得体会,帮助一下之后的学生。被请喝茶什么的,在天朝呆久了查水表都不怕还怕喝茶?其实一开始,我真的非常想看他们痛苦地不断踩各种坑又从坑里爬起来的挣扎的样子。因为自己在其中倾注了太多的心血,从而产生逆向合理化的心理效应,觉得这就是所谓的“吃得苦中苦,方为人上人”,觉得只有在痛苦中得到的东西才会更加深刻更加珍惜。可是这样我自己不也渐渐变成恶龙了吗?我觉得,我要帮助他们超越我自己,而我自己为了防止被他们超越,也会更加努力地学习,只有这样才能达到双赢,对他人对自己都是大有裨益的。

最后我觉得最本质的原因是,现在的环境有点畸形,很多人来CMU都是来转CS当码农的,然后又听说CC这门课对找工作很有帮助,所以很多不应该上这门课,或者是说现阶段还不适合上这门课的人都来上了这门课。搞得现在CC都像是所有想转CS的学生的必修课一样。像我和我室友三人都是转CS的,又才刚开始补基础,所以才会上得举步维艰。如果像我当时科班出身的几个同学那样,基础很好,每周花两天以内的时间就可以搞定,这才能够“乐在其中”。

所以给以后想上CC的同学的建议是:

第一,至少基础搞好了才来上CC,不要连Linux基本命令都没操作过就来赶鸭子上架,那会是相当痛苦的。

第二,看你喜不喜欢做Cloud,以后走不走这条路,而不单纯仅仅是为了在简历上多几行字。虽然上完这个课后好像确实是可以在简历上写很多东西,但是找不找得到工作的因素有很多,你性别写成“女”都可能比你在上面写CC的项目能收到的面试多,谁知道是哪一个因素影响你找工作呢?

再说一句,其实这一届的CCTA已经好很多了,比如说成神啊浩原啊神奇的振宇哥啊,至少当初是我CC的私人TA,告诉了我所有我想知道的东西,至少这次也非常努力改进了writeup,标出了不同的坑。但是在Majd的教育体系下,学生们还是要从受苦受累中获得知识。

最后说一句,以后CC有不懂的可以直接来找我!!

我要回帖

更多关于 sql语句日期条件查询 的文章

 

随机推荐