我的任务要求我找出"每个日期写了多少发票?"
我有点陷入困境,并向我的教授寻求帮助.她通过电子邮件向我发送了一个问题,回答了这个问题,"每种类型和版本的炉子已经建成了多少?对于挑战但没有额外的积分,包括炉灶的总数."
这是她发给我的查询:
SELECT STOVE.Type + STOVE.Version AS 'Type+Version'
, COUNT(*) AS 'The Count'
FROM STOVE
GROUP BY STOVE.Type + STOVE.Version WITH ROLLUP;
Run Code Online (Sandbox Code Playgroud)
所以,我调整了那个查询,直到满足了我的需求.这就是我想出的:
SELECT InvoiceDt
, COUNT(InvoiceNbr) AS 'Number of Invoices'
FROM INVOICE
GROUP BY InvoiceDt WITH ROLLUP
ORDER BY InvoiceDt ASC;
Run Code Online (Sandbox Code Playgroud)
它返回了我想要的以下结果.
无论如何,我决定阅读ROLLUP条款,并从微软的一篇文章开始.它说ROLLUP子句类似于CUBE子句,但是它通过以下方式区别于CUBE子句:
所以,我决定用CUBE替换我的查询中的ROLLUP,看看会发生什么.他们产生了相同的结果.我猜这就是我感到困惑的地方.
看来,如果你使用的是我在这里的查询类型,那么这两个条款之间没有任何实际的区别.是对的吗?或者,我不明白什么?当我读完微软的文章时,我曾想过,使用CUBE子句我的结果应该是不同的.
我现在正在上课,决定花时间学习Perl.我开头的Perl工作(http://www.perl.org/books/beginning-perl/).我在第三章的结尾完成了练习.
其中一个练习要求我"将您的重要电话号码存储在哈希中.编写一个程序,按人名查找数字."
无论如何,我想出了这个:
#!/usr/bin/perl
use warnings;
use strict;
my %name_number=
(
Me => "XXX XXX XXXX",
Home => "YYY YYY YYYY",
Emergency => "ZZZ ZZZ ZZZZ",
Lookup => "411"
);
print "Enter the name of who you want to call (Me, Home, Emergency, Lookup)", "\n";
my $input = <STDIN>;
print "$input can be reached at $name_number{$input}\n";
Run Code Online (Sandbox Code Playgroud)
它只是不起作用.我一直收到此错误消息:
在串联(.)中使用未初始化的值或在hello.plx第17行第1行使用字符串
我尝试了更多的代码,但每个"解决方案"看起来比之前的"解决方案"更复杂.最后,我决定检查答案.
我的代码和答案之间的唯一区别是chomp ($input);后面的存在<STDIN>;.
现在,作者chomp在之前的例子中使用过,但他并没有真正涵盖chomp正在做的事情.所以,我在www.perlmeme.org上找到了这个答案:
该
chomp()函数将删除(通常)字符串末尾的任何换行符.我们通常说的原因是它实际上删除了与$/(输入记录分隔符)的当前值匹配的任何字符,并$/默认为换行符.
无论如何,我的问题是: …