如何在同一个 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 BY
和 ORDER BY
当 COUNT
出现时。我使用 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
我一直在努力,非常感谢您的帮助:
我有两台车和游乐设施
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 BY
和 ORDER BY
当 COUNT
出现时。我使用 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