这里是 SQL 初学者。所以到目前为止,当我尝试根据“一代”列查找总旅行时间时,我得到了这个:
SELECT
generation,
SUM(CASE WHEN generation = 'Millennials' THEN Rental_Duration_seconds END) AS MillennialTT,
SUM(CASE WHEN generation = 'Generation Z' THEN Rental_Duration_seconds END) AS GenZTT,
SUM(CASE WHEN generation = 'Generation X' THEN Rental_Duration_seconds END) AS GenXTT,
SUM(CASE WHEN generation = 'Baby Boomers' THEN Rental_Duration_seconds END) AS BBYBoomerTT,
SUM(CASE WHEN generation = 'Silent Generation' THEN Rental_Duration_seconds END) AS SilentGenTT
FROM
dbo.2019_Q2_Trips
GROUP BY
generation;
此查询将生成一个包含多个列的表,这些列具有不必要的 NULL 值。我可以使用 ELSE 语句将 NULL 值设置为 0,但这不会使列消失。
有没有更好的方法来做到这一点,不会生成多列?
是的,有。
SELECT generation, SUM(Rental_Duration_Seconds) FROM 2019_Q2_Trips GROUP BY generation;