我有一个包含很多值的表,但我唯一关心的是年、日、月和贡献因子。
我如何编写一个查询,以便它给出每天每个贡献_因子值出现的次数?
例子:
年、月、日、contribution_factor、timesOccurred、
2017, 10, 21, 司机分心, 48
我试过使用
SELECT `year`,`day`,`month`, CONTRIBUTING_FACTOR_VEHICLE_1, COUNT(CONTRIBUTING_FACTOR_VEHICLE_1) as occurrences
FROM table
GROUP BY CONTRIBUTING_FACTOR_VEHICLE_1
但我想不出一种写法,这样我就不会收到错误 1055。
您需要一个日期列作为函数的参数,并且您需要在 group by 子句中包含相同的内容,例如
SELECT
year(datecol)
, month(datecol)
, day(datecol)
, CONTRIBUTING_FACTOR_VEHICLE_1
, COUNT(*) as occurrences
FROM table
GROUP BY
year(datecol)
, month(datecol)
, day(datecol)
, CONTRIBUTING_FACTOR_VEHICLE_1
;
请注意,在 group by 子句中重复这 3 个函数调用可能看起来效率低下 - 但事实并非如此。SQL 查询的工作方式是在 select 子句之前执行 GROUP BY 子句,因此不会降低查询效率。
此外,SQL 标准要求 select 子句的所有*“非聚合”列也用于 group by 子句。
all* 除非存在“函数依赖”和其他一些边缘情况,从纯粹实用的角度来看,只需重复所有非聚合列(即所有不使用 COUNT() MIN() MAX() AVG() 等的列)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句