我是 SQL 新手。我有以下有效的查询,附在下面。
我在没有GROUP BY功能的情况下尝试了多次,但没有成功。我很好奇这个函数的作用,因为我无法理解在线的任何描述,特别是这篇文章:https://www.w3schools.com/sql/sql_groupby.asp。我知道这会导致 items 表的行被收集到组中,但为什么我需要这样做才能使该查询正常工作?
SELECT
usertype,
CONCAT(start_station_name," to ", end_station_name) AS route,
COUNT(*) as num_trips,
ROUND(AVG(cast(tripduration as int64)/60), 2) AS duration
FROM
`bigquery-public-data.new_york_citibike.citibike_trips`
GROUP BY
start_station_name, end_station_name, usertype
LIMIT 10
select col1, col2, col3, concatenate(col1, col2)
from table_
where col1 = 'some_value'
这种 SQL 仅指行 concatenate(col1, col2) 也指行。
COUNT(*) 是聚合函数之一,这意味着它们引用行组,这就是您需要使用 GROUP BY 子句的原因。使用 group by,您可以执行 HAVING -> 对于行来说,what is WHERE,即对行组执行 HAVING。
尝试创建具有上述任何类型的 3 个字段的表,用几行填充它们,-> col1 包含所有值,col2 只有 2 个值,col3 有 1 个值,然后尝试对每列执行计数以查看发生什么事。