按计数分组多个表

  • 本文关键字: sql sql-server
  • 更新时间 :
  • 英文 :


需要找出为什么我的组计数查询不工作。我正在使用Microsoft SQL Server,并且有2个表我正在尝试加入。

我的查询需要为每种类型的车辆带来交易的数量。查询的输出需要为每种类型的车辆(如ute、hatch、sedan等)提供单独的行。

CREATE TABLE vehicle
(
vid   INT PRIMARY KEY,
type  VARCHAR(30) NOT NULL,
year  SMALLINT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
);
INSERT INTO vehicle
VALUES (1, 'Sedan', 2020, 240)
CREATE TABLE purchase
(
pid        INT PRIMARY KEY,
vid        INT REFERENCES vehicle(vid),
pdate      DATE NOT NULL,
datepickup DATE NOT NULL,
datereturn DATE NOT NULL,
);
INSERT INTO purchase
VALUES (1, 1, '2020-07-12', '2020-08-21', '2020-08-23') 

我在每个表中有大约10行信息,只是我还没有写出来。

这是我写的,但是它没有返回每种类型汽车的正确交易数。

SELECT 
vehicle.vid,
COUNT(purchase.pid) AS NumberOfTransactions
FROM   
purchase
JOIN 
vehicle ON vehicle.vid = purchase.pid
GROUP BY 
vehicle.type; 

任何帮助都会很感激。谢谢。

您的GROUP BYSELECT列不一致。您应该像这样编写查询:

SELECT v.Type, COUNT(*) AS NumPurchases
FROM Purchase p JOIN
Vehicle v
ON v.vID = p.pID
GROUP BY v.Type;

注意表别名的使用,这样查询更容易写和读。

如果这没有产生预期的值,您将需要提供样本数据和期望的结果,以明确数据的真实样子和您的期望。

相关内容

  • 没有找到相关文章

最新更新