【问题标题】:SQL Select Case SUM()/total?SQL Select Case SUM()/total?
【发布时间】:2021-11-26 15:09:51
【问题描述】:

我正在尝试为数据库中的曲目总数生成一行,目前我为一种媒体类型提供了一行,为另一种类型提供了一行,我只需要为此生成一个总行但我想不通。

我尝试了下面的代码,希望它可以工作,但它出现了关于 GROUP BY 子句中不允许聚合函数的错误

    SELECT CASE
    WHEN m.name LIKE '% AAC %' OR m.name LIKE 'AAC %' THEN 'AAC'
    WHEN m.name NOT LIKE '% AAC %' OR m.name NOT LIKE 'AAC %' THEN 'non-AAC'
    WHEN COUNT(m.name) <> 0 THEN 'Total'
    END AS Media, COUNT(t.MediaTypeID) AS 'Tracks'
    FROM MediaType m, Track t
    WHERE m.MediaTypeID = t.MediaTypeID
    GROUP BY Media

我哪里错了?这是在 SQLite 中完成的

【问题讨论】:

标签: sql sqlite


【解决方案1】:

使用这个我修改过的: 但是,如果您想要它而不是在查询中使用两个临时表,则此查询复制并粘贴您的系统,您会得到答案

SELECT CASE
WHEN m.name LIKE '%AAC%' OR m.name LIKE 'AAC%' THEN 'AAC'
WHEN m.name NOT LIKE '%AAC%' OR m.name NOT LIKE 'AAC%' THEN 'non-AAC'
END AS Media,COUNT(t.MediaTypeID) AS 'Tracks'
into #temp FROM MediaType m, Track t
WHERE m.MediaTypeID = t.MediaTypeID
GROUP BY m.name
Select Media as 'Total' ,count(case when Media LIKE '%AAC%' OR Media LIKE 'AAC%' THEN 'AAC'
            WHEN Media NOT LIKE '%AAC%' OR Media NOT LIKE 'AAC%' THEN 'non-AAC'
            end) as 'Truck' into #temp1 from #temp
group by Media

insert into #temp1 values('Total',(Select  sum(Tracks) as 'Total'  from #temp))
Select * from #temp1

如果使用任何聚合函数而不是列名必须分组,否则会出错

【讨论】:

  • 嗨,在这种情况下它仍然不会产生总行..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 2022-11-23
  • 2021-02-09
  • 1970-01-01
相关资源
最近更新 更多