我怎样才能 select 其他有计数的东西
how can I select something else with count
我的任务是 select 销售员的姓名和 ID,并计算他们在 2010 年在 FireBird 2.5 中售出的汽车数量。这是数据库:
Salesman(salesmanID:int primary key, salesmanName:char(20), SalesmanSurname:char(20))
sale (SalesDate:Date, SalesmanID:foreignkey to salesman)
我试过这个:
select s.count(*), sm.salesmanID, sm.salesmanName, sm.SalesmanSurname
from sale s inner join salesman on s.salesmanID=sm.salesmanID
where SalesDate between '1.1.2010' and '31.12.2010';
我得到的错误是:
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
您使用的 s.count(*)
不是有效的语法。这可能是您收到错误的原因之一。
此外,我没有将 sm
视为任何 table 的别名。此处发现多个问题。
先进行汇总(您缺少分组依据),然后将结果与销售员合并 table:
select s.salescount, s.salesmanID , sm.salesmanName, sm.SalesmanSurname from
(select count(*) as salescount, salesmanID
FROM sale where SalesDate between '1.1.2010' and '31.12.2010'
group by salesmanID) as s inner join salesman sm on s.salesmanID=sm.salesmanID
这样工作
SELECT
count(*),
sm.salesmanID,
sm.salesmanName,
sm.SalesmanSurname
FROM
sale s
INNER JOIN salesman sm ON s.salesmanID = sm.salesmanID
WHERE
s.SalesDate BETWEEN '1.1.2010'
AND '31.12.2010'
GROUP BY
sm.salesmanID,
sm.salesmanName,
sm.SalesmanSurname
我的任务是 select 销售员的姓名和 ID,并计算他们在 2010 年在 FireBird 2.5 中售出的汽车数量。这是数据库:
Salesman(salesmanID:int primary key, salesmanName:char(20), SalesmanSurname:char(20))
sale (SalesDate:Date, SalesmanID:foreignkey to salesman)
我试过这个:
select s.count(*), sm.salesmanID, sm.salesmanName, sm.SalesmanSurname
from sale s inner join salesman on s.salesmanID=sm.salesmanID
where SalesDate between '1.1.2010' and '31.12.2010';
我得到的错误是:
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)
您使用的 s.count(*)
不是有效的语法。这可能是您收到错误的原因之一。
此外,我没有将 sm
视为任何 table 的别名。此处发现多个问题。
先进行汇总(您缺少分组依据),然后将结果与销售员合并 table:
select s.salescount, s.salesmanID , sm.salesmanName, sm.SalesmanSurname from
(select count(*) as salescount, salesmanID
FROM sale where SalesDate between '1.1.2010' and '31.12.2010'
group by salesmanID) as s inner join salesman sm on s.salesmanID=sm.salesmanID
这样工作
SELECT
count(*),
sm.salesmanID,
sm.salesmanName,
sm.SalesmanSurname
FROM
sale s
INNER JOIN salesman sm ON s.salesmanID = sm.salesmanID
WHERE
s.SalesDate BETWEEN '1.1.2010'
AND '31.12.2010'
GROUP BY
sm.salesmanID,
sm.salesmanName,
sm.SalesmanSurname