SQL - 来自SELECT的COUNT结果

时间:2018-04-19 18:54:48

标签: sql perl dbd

我想计算所有资产的利润列中的最大值的所有重复次数(它们重复,我想从每个唯一的重复中选择最佳结果),最后根据值的值对结果进行分组。战略专栏。

我使用DBD :: CSV for Perl,它使用像这样的SQL语句:http://search.cpan.org/~rehsack/SQL-Statement-1.412/lib/SQL/Statement/Syntax.pod

但这并不重要。我最关心的是改进我的语法,我应该处理剩下的事情。

SELECT COUNT(*) AS dupa 
FROM (SELECT asset, strategy, MAX(profit) 
      FROM a1.csv 
      GROUP BY strategy);

输出:Bad table or column name: 'SELECT' is a SQL reserved word!

另一个例子:

SELECT * AS xxx FROM (SELECT strategy, profit FROM a1.csv GROUP BY strategy)

输出:Bad table or column name: 'SELECT' is a SQL reserved word!

这是唯一的例子。我尝试了不同的组合,总是有错误。我想问一下我的语法有什么问题?

1 个答案:

答案 0 :(得分:3)

您可以存储来自' FROM'的查询。 CTE中的条款如下:

with cte as(
SELECT asset, strategy, MAX(profit) FROM a1.csv GROUP BY strategy
)
Select count(*)
From cte

这是另一种方法,请你试试下面的代码:

SELECT COUNT(t.*) AS dupa 
FROM (SELECT asset, strategy, MAX(profit) 
      FROM a1.csv 
      GROUP BY strategy) t

好的,这是使用临时表的另一种方法,就像我之前说过的那样:

CREATE TEMP TABLE TempTable AS 
SELECT asset, strategy, MAX(profit) FROM a1.csv GROUP BY asset, strategy

SELECT COUNT(*) FROM TempTable