此查询工作正常
select OrderForSeries.memberid,
Orderforseries.seriesid ,
log(count(orderforcontent.id)) as rating,
Series.Mainauthorid,
series.Likecount,
series.viewcount
from series join OrderForSeries on OrderForSeries.SeriesId=Series.id
join orderforcontent on orderforcontent.OrderForSeriesid=OrderForSeries.id
group by OrderForSeries.memberid, orderforseries.seriesid ,
Series.Mainauthorid, series.Likecount, series.viewcount
order by OrderForSeries.seriesid
但是当我将第三行中的“series.view count”更改为log(series.view count)时,我得到了错误。我认为这是因为GRUOP的查询。我如何在这里使用日志功能?
我正在使用Microsoft Azure'导入数据'但是当我使用Visual Studio时,它运行正常
这是错误:
requestId = 96da06356e5d42b6bf5aede3170f718f errorComponent=Module.
taskStatusCode=400.
{"Exception":
{ "ErrorId":"InvalidSQLScript",
"ErrorCode":"0069",
"ExceptionType":"ModuleException",
"Message":"Error 0069: SQL query \"
select top 75000
OrderForSeries.memberid,
Orderforseries.seriesid ,
log(count(orderforcontent.id)) as rating,
Series.Mainauthorid,
series.Likecount,
log(series.viewcount)
from series
join OrderForSeries on OrderForSeries.SeriesId=Series.id
join orderforcontent on orderforcontent.OrderForSeriesid=OrderForSeries.id
group by OrderForSeries.memberid, orderforseries.seriesid ,
Series.Mainauthorid, series.Likecount, series.viewcount
order by OrderForSeries.seriesid
" is not correct:
??? ?? ??? ??? ??????.
Please double check your query against your database."
}
}
Error: Error 0069:
SQL query " .... " is not correct:
??? ?? ??? ??? ??????.
Please double check your query against your database.
Process exited with error code -2
你应该在log
后面加上GROUP BY
函数。大多数数据库系统都要求聚合函数之外的属性或表达式需要在GROUP BY
和SELECT
之后。
select OrderForSeries.memberid,
Orderforseries.seriesid ,
log(count(orderforcontent.id)) as rating,
Series.Mainauthorid,
series.Likecount,
log(series.viewcount)
from series join OrderForSeries on OrderForSeries.SeriesId=Series.id
join orderforcontent on orderforcontent.OrderForSeriesid=OrderForSeries.id
group by OrderForSeries.memberid,
Orderforseries.seriesid ,
Series.Mainauthorid,
Series.Likecount,
log(Series.viewcount)
order by OrderForSeries.seriesid
不确定你正在使用什么DBMS - MS SQL能够处理这个问题。
在任何情况下,如果您的数据库无法在分组字段上执行log()等操作,则有两个选项。
选项A - 使用子查询
没有什么能阻止你写作
select fieldA, fieldB, log(fieldC)
from
(
select fieldA, fieldB, fieldC from somewhere
) as subQ
...换句话说,使用子查询生成原始数据,然后使用更高级别的查询来执行要对其执行的数学运算。
选项B - 也将Group-By更改为Log()。
如果引擎不允许您在分组依据字段上执行功能,则始终可以将该功能添加到group by子句中。
Select fieldA, log(fieldB)
from somewhere
group by fieldA, log(fieldB)