达梦数据库中的GROUP BY语句

达梦DCA证书考试有一道题目是:统计各部门工资总和,并列出大于80000的所有部门、ID和总工资数,当时手里少写了一个条件,练习的时候想起来了,记录一下大致如下:

我写的语句:

select
        a.DEPARTMENT_ID as 部门编号,
        sum(SALARY)     as 部门工资,
        DEPARTMENT_NAME as 部门名称
from
        TEST.EMPLOYEE a,TEST.DEPARTMENT b
where   a.DEPARTMENT_ID = b.DEPARTMENT_ID
group by
        a.DEPARTMENT_ID
having  sum(SALARY) > 80000
ORDER BY
        a.DEPARTMENT_ID;

报错:

错误[-4080]:

不是 GROUP BY 表达式

问题原因:

ORACLE或者DMDB库中:GROUP BY后面必须加上你SELECT后面所查询的所有除聚合函数之外的所有字段,原语句太粗心少写了一个列。

正确语句:

select
        a.DEPARTMENT_ID as 部门编号,
        sum(SALARY)     as 部门工资,
        DEPARTMENT_NAME as 部门名称
from
        TEST.EMPLOYEE a,TEST.DEPARTMENT b
where   a.DEPARTMENT_ID = b.DEPARTMENT_ID
group by
        a.DEPARTMENT_ID,DEPARTMENT_NAME
having  sum(SALARY) > 80000
ORDER BY
        a.DEPARTMENT_ID;

语句等价于:

select
        a.DEPARTMENT_ID as 部门编号,
        sum(SALARY)     as 部门工资,
        DEPARTMENT_NAME as 部门名称
from
        TEST.EMPLOYEE a
inner join TEST.DEPARTMENT b
on
        a.DEPARTMENT_ID = b.DEPARTMENT_ID
group by
        a.DEPARTMENT_ID,
        DEPARTMENT_NAME
having
        sum(SALARY) > 80000
ORDER BY
        a.DEPARTMENT_ID;

补充SQL基本关键词书写顺序规则:

select==》from==》where==》group by==》having==》order by

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
达梦数据库,可以使用GROUP BY子句来实现类似于MySQLGroup_Concat(expr)函数的功能。GROUP BY子句用于根据指定的列对结果进行分组,并且可以结合聚合函数来对每个分组进行计算。在达梦数据库,可以使用GROUP BY子句和GROUP_CONCAT函数来实现类似的功能。GROUP_CONCAT函数用于将每个分组的多个值合并为一个字符串,并且可以使用特定的分隔符进行分隔。 例如,以下是在达梦数据库使用GROUP BY和GROUP_CONCAT函数将多个值合并为一个字符串的示例: SELECT column1, GROUP_CONCAT(column2 SEPARATOR ',') FROM table GROUP BY column1; 这个查询将根据column1列对表的数据进行分组,并将每个分组的column2列的多个值合并为一个字符串,使用逗号作为分隔符。 需要注意的是,在达梦数据库,语法和函数名称可能会有所不同,因此具体的语法和函数名称可能需要根据实际情况进行调整。可以参考达梦数据库的官方文档或咨询相关支持来获取更详细的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [达梦数据库迁移之group by 替换](https://blog.csdn.net/weixin_44907192/article/details/123328932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [达梦数据库GROUP BY语句](https://blog.csdn.net/Oraclesand/article/details/126870609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值