计算具有相同 id 的列的值的存储过程

Posted

技术标签:

【中文标题】计算具有相同 id 的列的值的存储过程【英文标题】:stored procedure that counts value of columns with same id 【发布时间】:2021-03-19 16:29:58 【问题描述】:

是否可以有一个基于 id 计算值的存储过程?

更新: 我想要,“Day”中具有相同值的列具有相同的 ID。 我想计算一列中的数字,并显示与之相关的 ID。

我的桌子

  | id   | day    | desc  |
   |:---- |:------:| ----- |
   | 1    |  mon   | Three |
   |:---- |:------:| ----- |
   | 1    |  mon   | Three |
   |:---- |:------:| -----:|
   | 2    | Tues   | Three |
   |:---- |:------:| -----:|
   | 2    | Tues   | Three |
   |:---- |:------:| -----:|
   | 3    | Weds   | Three |
   |:---- |:------:| -----:|
   | 3    | Weds   | Three |
   |:---- |:------:| -----:|
   | 2    |Tues    | Three |
   |:---- |:------:| -----:|
   | 2    | Tues   | Three |

来自 sp 的期望输出:

   | id   | day    | desc |
   |:---- |:------:| -----|
   | 1    |  2     | Three|
   |:---- |:------:| -----|
   | 2    | 4      |Three |
   |:---- |:------:| -----|
   | 3    | 2      |Three |
   |:---- |:------:| -----|

neer suggested I do this

select id, count(*) as cnt
from mytable
group by id

这对于只带回一列很有好处,但我现在需要带回两列。

总结, 您如何计算一列并使用相应的 ID 将其返回(其中 A 列的值都具有相同的 ID,具体取决于值)

【问题讨论】:

这个问题与存储过程有什么关系?您在询问查询逻辑,而不是 sp。标题和标签具有误导性。 这个查询必须在存储过程中发生,请看下面的答案。 此查询的逻辑不依赖于执行上下文-视图、sp、函数、ad-hoc 等。stored-procedures 标签旨在标记问题,它处理特定于 sp 的问题(参数、临时表范围、访问权限、语法问题等等)。如果有人搜索此类以 sp 为中心的问题,您的问题标题和标签只会产生不必要的噪音。 【参考方案1】:

你只是想要聚合吗?

select id, count(*) as cnt
from mytable
group by id

查询本身就足够了 - 如果您不想一次又一次地键入相同的查询,也可以使用视图。

【讨论】:

【参考方案2】:

回答:

SELECT ID, CAST(StartDate as Date) as StartDate, count(*) as Values
FROM 
Table
WHERE 
DateArchived is null
GROUP BY CAST(StartDate as Date), ID

【讨论】:

以上是关于计算具有相同 id 的列的值的存储过程的主要内容,如果未能解决你的问题,请参考以下文章

在保留列的同时计算具有相同值的行

聚合具有两个或多个具有相同值的列的行

Hibernate / JPA在合并后获取数据库中具有默认值的列的值

将表中的列值作为参数传递给存储过程 sql

在具有循环或 lambda 的多个数据帧中添加具有相同字符串值的列的更有效方法?

如何在pyspark中连接具有相同名称的列的值