【问题标题】:how to count column values?如何计算列值?
【发布时间】:2015-03-01 09:56:40
【问题描述】:

这是我的查询:

SELECT DISTINCT r1.STATE_OFFICE_CODE,
   r1.AREA_OFFICE_CODE,
   r1.AREA_OFFICE_NAME,
   r2.LAST_EOD_EXECUTION
FROM report_one r1
INNER JOIN report2 r2 ON r1.distributor_code = r2.distributor_code
ORDER BY r1.AREA_OFFICE_CODE;

一切正常。输出:

但是当我尝试计算 r2.LAST_EOD_EXECUTION 的列时,我得到错误“不是一个单一的函数组”:

SELECT DISTINCT r1.STATE_OFFICE_CODE,
   r1.AREA_OFFICE_CODE,
   r1.AREA_OFFICE_NAME,
   r2.LAST_EOD_EXECUTION,
   count(r2.LAST_EOD_EXECUTION) AS NumberOfDates
FROM report_one r1
INNER JOIN report2 r2 ON r1.distributor_code = r2.distributor_code
ORDER BY r1.AREA_OFFICE_CODE;

请问有人可以帮忙吗?我如何计算这些值?

【问题讨论】:

  • 您是否尝试过在 select 子句中只有 count(r2.LAST_EOD_EXECUTION)
  • 对不起,我也使用了 group by 语法,即 ....group by r1.AREA_OFFICE_CODE order by r1.AREA_OFFICE_CODE;

标签: sql select count group-by


【解决方案1】:

删除distinct 关键字并添加group by 子句:

SELECT r1.STATE_OFFICE_CODE,
   r1.AREA_OFFICE_CODE,
   r1.AREA_OFFICE_NAME,
   r2.LAST_EOD_EXECUTION,
   count(r2.LAST_EOD_EXECUTION) AS NumberOfDates
FROM report_one r1
INNER JOIN report2 r2 ON r1.distributor_code = r2.distributor_code
GROUP BY r1.STATE_OFFICE_CODE,
   r1.AREA_OFFICE_CODE,
   r1.AREA_OFFICE_NAME,
   r2.LAST_EOD_EXECUTION
ORDER BY r1.AREA_OFFICE_CODE;

编辑:
目前尚不完全清楚您要达到的目标,但如果您要获取每组不同 LAST_EOD_EXECUTION 值的数量,则需要在 count 中使用 distinct 关键字:

SELECT r1.STATE_OFFICE_CODE,
   r1.AREA_OFFICE_CODE,
   r1.AREA_OFFICE_NAME,
   r2.LAST_EOD_EXECUTION,
   count(distinct r2.LAST_EOD_EXECUTION) AS NumberOfDates
FROM report_one r1
INNER JOIN report2 r2 ON r1.distributor_code = r2.distributor_code
GROUP BY r1.STATE_OFFICE_CODE,
   r1.AREA_OFFICE_CODE,
   r1.AREA_OFFICE_NAME,
   r2.LAST_EOD_EXECUTION
ORDER BY r1.AREA_OFFICE_CODE;

【讨论】:

  • 请看我的输出图片
  • 谢谢Mureinik先生,它正在工作,但小错误是您在order by子句之前添加了逗号
  • @VenkatSri 复制粘贴错误,确实 - 感谢您指出这一点。固定。
猜你喜欢
  • 2021-03-25
  • 2018-09-11
  • 2011-03-08
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多