子组数据的LOBase HSQL子查询
我有一个骑自行车的数据库,我用它来学习使用libreofficebase和HSQL的SQL。数据库由一个表组成,表中的列有:索引、日期、自行车、英里 我想做的是为我的公路自行车和mtn自行车创建一个列,列上每年的自行车骑行次数。我从一个子查询和开始,但这给了我整个数据库的总和。这是我的公路自行车代码,mtn bikes列将使用另一个子查询:子组数据的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(
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结束,因此它将仅对这些值的聚合函数求和