Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子组数据的LOBase HSQL子查询_Sql_Database_Hsqldb_Libreoffice Base - Fatal编程技术网

子组数据的LOBase HSQL子查询

子组数据的LOBase HSQL子查询,sql,database,hsqldb,libreoffice-base,Sql,Database,Hsqldb,Libreoffice Base,我有一个骑自行车的数据库,我用它来学习使用libreofficebase和HSQL的SQL。数据库由一个表组成,表中的列有:索引、日期、自行车、英里 我想做的是为我的公路自行车和mtn自行车创建一个列,列上每年的自行车骑行次数。我从一个子查询和开始,但这给了我整个数据库的总和。这是我的公路自行车代码,mtn bikes列将使用另一个子查询: SELECT YEAR( "RideDate" ) AS "Year", SUM( "Miles" ) AS "Miles", ( SELECT SUM(

我有一个骑自行车的数据库,我用它来学习使用libreofficebase和HSQL的SQL。数据库由一个表组成,表中的列有:索引、日期、自行车、英里

我想做的是为我的公路自行车和mtn自行车创建一个列,列上每年的自行车骑行次数。我从一个子查询和开始,但这给了我整个数据库的总和。这是我的公路自行车代码,mtn bikes列将使用另一个子查询:

SELECT YEAR( "RideDate" ) AS "Year", SUM( "Miles" ) AS "Miles", 
( SELECT SUM( "Miles" ) FROM "BikeDate" 
   WHERE( "Bike" = 'Fuji' OR "Bike" = 'Yfoil' )) AS "% Miles" 
FROM "BikeDate" AS "BikeDate" 
GROUP BY YEAR( "RideDate" ) 
ORDER BY YEAR( "RideDate" ) DESC

由于我是按年份分组的,如何获得每个分组元素->年份的总和?我很抱歉不知道正确的术语。我也不想做一个简单的总和,我按年份和自行车分组,我有。我想用where子句把年数分开。谢谢你的帮助,戴夫。LOBase 4.2.3.3.

让我根据您的实际需要,提出两种可能性,以便返回与原始帖子相同的值:

SELECT 
   YEAR( "RideDate" ) AS "Year", 
   SUM( "Miles" ) AS "Miles", 
   SUM(CASE WHEN "Bike" = 'Fuji' OR "Bike" = 'Yfoil' THEN "Miles" ELSE 0 END) as "% Miles"
FROM "BikeDate" AS "BikeDate" 
GROUP BY YEAR( "RideDate" ) 
ORDER BY YEAR( "RideDate" ) DESC
为了创建一个额外的列,这将真正计算百分比。比如:

SELECT 
   YEAR( "RideDate" ) AS "Year", 
   SUM( "Miles" ) AS "Miles", 
   SUM(CASE WHEN "Bike" = 'Fuji' OR "Bike" = 'Yfoil' THEN "Miles" ELSE 0 END) as "Miles_Fuji_Yfoil",
   SUM(CASE WHEN "Bike" = 'Fuji' OR "Bike" = 'Yfoil' THEN "Miles" ELSE 0 END) * 100.0000000 / SUM("Miles") as "Pct_Miles_Fuji_Yfoil"
FROM "BikeDate" AS "BikeDate" 
GROUP BY YEAR( "RideDate" ) 
ORDER BY YEAR( "RideDate" ) DESC
说明:当。或值ELSE 0结束,因此它将仅对这些值的聚合函数求和