可能重复:
SQL中的GROUP BY /聚合函数混淆
我收到了一个错误 -
列'Employee.EmpID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
Run Code Online (Sandbox Code Playgroud)
这种情况符合Bill Karwin给出的答案.
修正以上,适合ExactaBox的答案 -
select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
Run Code Online (Sandbox Code Playgroud)
原始问题 -
对于SQL查询 -
select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID) …
Run Code Online (Sandbox Code Playgroud) 我看到一个例子,其中有一份员工名单(表格)及其各自的月薪.我做了一笔工资,并在ouptput中看到完全相同的表!那很奇怪.
以下是必须要做的事情 - 我们必须找出这个月我们支付多少钱作为员工工资.为此,我们需要在数据库中汇总他们的工资金额,如图所示 -
SELECT EmployeeID, SUM (MonthlySalary)
FROM Employee
GROUP BY EmpID
Run Code Online (Sandbox Code Playgroud)
我知道如果我不在上面的代码中使用group by,我会收到错误.这是我不明白的 -
我们从employee表中选择employeeid.SUM()被告知它必须从Employee表中添加MonthlySalary列.因此,它应该直接添加这些数字而不是将它们分组然后添加它们.
这是一个人如何做到这一点 - 查看员工表并添加所有数字.为什么他会麻烦地把它们分组然后加起来?
我的时区是UTC + 03:00.它存储在DateTimeZone对象中.如何将其转换为真实姓名,即东非时间/ EAT
我的查询 -
select cu.CustomerID,cu.FirstName,cu.LastName, COUNT(si.InvoiceID)as inv --1
from Customer as cu inner join SalesInvoice as si --2
on cu.CustomerID = si.CustomerID -- 3
-- put the WHERE clause here ! --4
group by cu.CustomerID,cu.FirstName,cu.LastName -- 5
where cu.FirstName = 'mark' -- 6
Run Code Online (Sandbox Code Playgroud)
用正确的代码输出 -
我得到错误 - 关键字'where'附近的语法不正确.
你能告诉我为什么会收到这个错误吗?我想知道为什么WHERE出现在GROUP BY之前而不是之后.
我希望使用Joda Time获得两次P(开始时间)和Q(结束时间)之间的差异.P和Q可以是不同日期甚至同一天的时间.我希望得到格式HH-MM-SS的差异,其中H =小时,M =分钟,S =秒.
我想在计时器中使用此功能.我假设没有人会使用我的计时器测量超过24小时.
请指导我这样做.
在我的hibernate.cfg.xml文件中,其中一个属性是 -
<property name = "transaction.factory_class"> <!--1-->
org.hibernate.transaction.JDBCTransactionFactory <!--2-->
</property> <!--3-->
Run Code Online (Sandbox Code Playgroud)
其他属性很容易理解.但是,当我看到上述财产时,我脑子里浮现出许多问题.
第1行 -它指定实现Transaction*Factory*接口的类.
Q1 -我看过TransactionFactory的java文档,但不明白它到底是什么.这个"工厂"是什么意思?他们为什么不把它称为TransactionGenerator -
生成Hibernate Transaction实例的合同.
Q2 - TransactionFactory引导我进行交易.这与数据库事务完全相同吗?
第3季 -
单个会话可能跨越多个事务,因为会话的概念(应用程序和数据存储区之间的对话)的粒度比事务的概念更粗略.但是,打算在任何时候最多有一个与特定会话相关联的未提交的事务.
......会话的概念比交易的概念更粗略.
这用简单的词语意味着什么?
-
但是,打算在任何时候最多有一个与特定会话相关联的未提交的事务.
你为什么打算这个?
我不认为API文档是清楚的.使n00b生活变得悲惨.
我看到两者都是数据的"流".在那种情况下,为什么认为它们不同?真的有什么区别?
评论 - 请不要关闭此问题.这是一种基本的东西,可以在面试中混淆人们.
更新1 - 每个人似乎都说同样的事情 - 你从IS读取并写入操作系统.所以,它们基本相同.就像一条水流过它的管道.当您使用该管道中的水时,您将其称为InputStream,当您将水泵入其中时,它称为输出流.它真的那么微不足道吗?
UPDATE2 - 如果差异不那么"大",那么我们可以有一个InAndOutStream而不必为两个类(InputStream和OutputStream)创建代码吗?
我正在做一个功能.select语句只返回一行,包含一列,比如说int.我如何将这个int存储在声明的变量中,以便我的函数可以返回变量?
select sum(table_name.col1) -- this line returns only one int. How to store that
--in a declared variable ?
from
(select
col1, col2
--code here
)table_name
Run Code Online (Sandbox Code Playgroud) 可以说我的Java代码中有几个循环.为了检查我的代码是否正确,我在纸上写下了所有必要的变量,并想象代码在我脑海中执行.我在纸上的每一步都注意到了它们的价值.有时我也必须使用print语句来发现错误.
是否有任何软件(我使用的Eclipse IDE独立或插件)可以为我跟踪所有这些事情?
我想在我的Java代码中序列化一些对象.我不想把它放在硬盘上的一些随机文件夹中.我希望它在我的eclipse项目文件夹中的A FOLDER中.如何制作此文件夹并将对象存储在其中?
这是一个好习惯吗?如果我试图从这个项目中创建一个独立的JAR,会不会有问题?
java ×6
sql ×4
jodatime ×2
eclipse ×1
group-by ×1
hibernate ×1
inputstream ×1
outputstream ×1
sql-server ×1
xml ×1