如何在同一个 table 中合并两列并计算其唯一出现次数

how can combine two columns in the same table and count its unique occurrences

我一直在努力,非常感谢您的帮助:

我有两台车和游乐设施

cars 
car_id car_manuf  car_model
     1 Honda      CRV
     2 Honda      Accord
     3 Toyota     Corolla
     4 Toyota     Camry
     5 Ford       Fusion

rides
ride_id car_id ride_destination
      1      3 Boston
      2      5 New York
      3      5 Washington DC
      4      1 California
      5      2 Dallas
      6      5 Canada

我想按car_manuf和car_model组合的每种车型计算乘坐次数,应该按乘坐次数从多到少排序。

输出应该是:

CarType-NumberofRides
Honda_CRV-1
Honda_Accord-1
Toyota_Corolla-1
Toyota_Camry-0
Ford_Fusion-3

使用次数最多的排序输出

CarType-NumberofRides
Toyota_Camry-0
Honda_Accord-1
Toyota_Corolla-1
Honda_CRV-1
Ford_Fusion-3

我的代码:

select
  c.car_manuf + '_' + c.car_model AS 'Car Type', 
  (select count(*) from rides r where r.car_id = c.car_id)  AS 'Number of Rides'
from cars c;

我有点卡在这里,不确定在获得正确输出方面我应该走哪个方向。

你必须使用 GROUP BYORDER BYCOUNT 出现时。我使用 CONCAT 来连接字符串而不是 + 号。更清楚是怎么回事,不会误认为是算术运算。

SELECT CONCAT(c.car_manuf, '_', c.car_model) AS CarType, COUNT(r.car_id) AS NumberOfRides
FROM rides r
LEFT JOIN cars c ON (r.car_id = c.car_id)
GROUP BY CarType
ORDER BY NumberOfRides ASC

然而,这忽略了 0 次出现。

如果您还想看到 0,请将 table 命令换成:

SELECT CONCAT(c.car_manuf, '_', c.car_model) AS CarType, COUNT(r.car_id) AS NumberOfRides
FROM cars c
LEFT JOIN rides r ON (r.car_id = c.car_id)
GROUP BY CarType
ORDER BY NumberOfRides ASC