我有一个产品表,我想知道从2016年到现在每月的产品数量。
Example:
January 15 2016
February 25 2016
March 05 2016
April 12 2016
我正在使用此Oracle查询:
SELECT TO_CHAR(LOGIN_DATE, 'Month') As "Month",
login_date,
Count(TO_CHAR(LOGIN_DATE, 'Month'))
from Product
group by TO_CHAR(LOGIN_DATE, 'Month')"
但它显示的错误不是按表达式分组。
需要这方面的建议。
答案 0 :(得分:0)
在嵌套SQL中使用EXTRACT函数是正确的:
TFDPhysODBCDriverBase.FindBestDriver
{{3}}
答案 1 :(得分:0)
问题是您的SELECT
语句中有一列既未汇总也未包含在GROUP BY
子句中(login_date
):
SELECT TO_CHAR(LOGIN_DATE, 'Month') As "Month",
login_date,
^^^^^^^^^^^
Count(TO_CHAR(LOGIN_DATE, 'Month'))
from Product
group by TO_CHAR(LOGIN_DATE, 'Month')
我怀疑你想要更像以下内容(请记住COUNT(*)
比Count(TO_CHAR(LOGIN_DATE, 'Month'))
更直观 - 而且你也不必担心login_date
是SELECT TO_CHAR(login_date, 'Month YYYY'), COUNT(*)
FROM product
GROUP BY TO_CHAR(login_date, 'Month YYYY');
的情况NULL):
TO_CHAR()
请注意,我还在TRUNC(login_date, 'MONTH')
的日期掩码中包含了年份 - 否则您将承担两个月的风险(例如,2016年1月和2017年1月)计算在一起进行汇总。我个人会使用SELECT TRUNC(login_date, 'MONTH'), COUNT(*)
FROM product
GROUP BY TRUNC(login_date, 'MONTH');
(这将在本月的第一天返回)并将格式保留给客户端:
running_inds = {}
for rec in SeqIO.parse("concatenate_0035_0042_dna2.fa", "fasta"):
希望这有帮助。