AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-279158

tkmagnet's questions

Martin Hope
tkmagnet
Asked: 2024-02-22 05:42:25 +0800 CST

查询满足多个条件和值的单个返回

  • 7

我试图找出一种方法,当一列中满足多个条件时对 ID 进行一次计数,同时在另一列中显示相同条件的总数。对于同一 ID,第一列的条件可以多次使用,但只需计数一次。有 2 个不同的 subGrp 值(1 和 2),但仅关注其中一个。这是我正在使用的两个表的示例数据:

create table vendor (
    subGrp char(1),
    subID varchar(10),
    subStatus char(1),
    subCat char(1) );

insert into vendor (
    subGrp, subID, subStatus, subCat)
values ('1','101','A','E'),
    ('1','105','A','F'),
    ('1','127','A','F'),
    ('1','132','A','F'),
    ('1','133','D','F'),
    ('1','154','A','F'),
    ('1','162','A','F'),
    ('1','167','W','E'),
    ('1','178','A','F'),
    ('1','196','A','F'),
    ('1','200','A','E'),
    ('1','205','A','F'),
    ('1','230','A','F'),
    ('1','231','A','F'),
    ('1','237','A','F'),
    ('1','259','A','F'),
    ('1','260','A','F'),
    ('1','271','A','F');

create table customer (
    cusID varchar(10),
    prodType char(1) );

insert into customer (
    cusID, prodType
values ('101','Y'),
    ('105','H'),
    ('105','Y'),
    ('127','H'),
    ('132','H'),
    ('132','Y'),
    ('132','Y'),
    ('132','F'),
    ('132','Y'),
    ('133','H'),
    ('133','S'),
    ('154','H'),
    ('154','Y'),
    ('154','Y'),
    ('154','Y'),
    ('154','Y'),
    ('162','H'),
    ('162','Y'),
    ('162','Y'),
    ('167','J'),
    ('178','H'),
    ('196','H'),
    ('200','Y'),
    ('205','H'),
    ('205','Y'),
    ('230','H'),
    ('230','Y'),
    ('230','Y'),
    ('230','Y'),
    ('230','Y'),
    ('231','H'),
    ('237','H'),
    ('259','H'),
    ('259','Y'),
    ('260','H'),
    ('271','H');

subGrp 将位于第一列中。在下一列中,我需要计算有多少 cusID 具有 Y、F 或 J prodType,同时具有 A 的 subStatus 和 F 的 subCat。唯一多次使用的值可在 prodType 中找到。

我想要以下结果:

亚组 产品类型总计 子组总计
1 7 14

因此,在 subGrp 1 中,如果 ID 包含 Y、F 或 J 的任意组合,则有 7 个 ID 仅计数一次,并且总共 14 个 ID 具有 A subStatus 和 F subCat。

它是第三方应用程序和数据库,因此我能做的事情有点有限(例如:使用不同时抛出错误:未找到标量函数)。他们告诉我这是 MS SQL。

另外,我不确定数据类型,因为我对此并不知情,但这就是我的假设。希望这是有道理的。提前致谢。

query
  • 1 个回答
  • 35 Views
Martin Hope
tkmagnet
Asked: 2024-01-26 06:18:56 +0800 CST

查询以查找特定当前值何时发生变化

  • 6

我有 3 个数据表(都包含更多列,但这些是我需要的每个表):

t1:表1

工作ID1 h1Amt h1Dt 地位
101 73.00 12/1/2023 A
124 0.00 2023年10月30日 D
第251章 0.00 2023 年 3 月 1 日 A
255 24:00 11/30/2023 A
256 0.00 12/1/2023 A

t2:表2

工作ID2 h2Amt h2Dt 类型1
101 第0073章 202312 2
101 0000 202308 13
101 0000 202307 1
124 0000 202310 3
124 0000 202306 2
124 0000 202304 13
124 第0079章 202301 3
第251章 0000 202303 2
第251章 第1154章 202301 3
第251章 0000 202212 3
255 第0024章 202311 2
255 0000 202212 3
255 0000 202210 13
255 第0175章 202209 3
256 0000 202312 1
256 0000 202309 13
256 0000 202307 3
256 第0583章 202305 2

t3:表3

工作ID3 h3Dt 类型2
101 12/1/2023 2
101 2023 年 8 月 13 日 13
101 2023 年 7 月 1 日 1
124 2023年10月1日 3
124 2023 年 6 月 1 日 2
124 2023 年 4 月 11 日 13
124 2023 年 1 月 1 日 3
第251章 2023 年 3 月 1 日 2
第251章 2023 年 1 月 1 日 3
第251章 2022年12月1日 3
255 11/1/2023 2
255 20022年12月1日 3
255 2022年10月7日 13
255 2022 年 9 月 1 日 3
256 12/1/2023 1
256 2023年9月5日 13
256 2023 年 7 月 1 日 3
256 2023 年 5 月 1 日 2

在 t1 中,每个 workID 只有一行,这是该 workID 的当前事务。随着数据的添加,所有 3 个表都会更新,其中 t1 仅显示当前事务。在 t2 和 t3 中,有多行,因为它显示每个 workID 的历史事务。

h1Amt 和 h2Amt 列显示相同的成本,但格式不同。此外,h1Dt、h2Dt 和 h3Dt 都反映相同的日期,只是格式不同。

我需要找到特定的当前值以及该值上次更改的时间。就我而言,我正在搜索 0.00 或 0000 的金额以及最后一次更改为该值的时间。此外,状态 (t1) 必须为“A”,类型(t2 或 t3)必须为 1、2 或 3。

这是我正在寻找的输出:

工作ID 数量 日期 类型
第251章 0.00 或 0000 202303 或 3/1/2023 2
256 0.00 或 0000 202307 或 7/1/2023 3

这是我到目前为止想到的,但它返回的金额当前不是 0000 (0.00),或者没有显示当前为 0000 (0.00) 的 workID。

select t2.workID2
     ,min(t2.h2Dt)
     ,min(t2.h2Amt)
from table2 t2
inner join table1 t1 on t2.workID = t1.workID
where not exists (
     select 1
     from table2
     where workID2 = t2.workID2
          and h2Amt <> t2.h2Amt
          and h2Dt > t2.h2Dt
     )
     and t2.h2Amt = '0000'
     and t1.status = 'A'
     and t2.type1 in ('1','2','3')
group by t2.workID2

我没有使用table3,主要是因为table2包含需要的h2Amt。我认为使用 table1 中的 h1Amt 对我来说并不明智,因为它只显示当前的内容。由于状态列,我至少需要使用 table1 。如果我确实使用 table3,则 table1 将是一个要求,因为它是唯一具有状态列的表,但我认为我会遇到查找历史金额的问题,因为它没有记录在 table1 或 table3 中。另外,我遇​​到了在我尝试过的其他查询中获取重复行的问题,包括使用所有 3 个表。

上面是我在大量搜索类似情况后看到的最接近的查询。

希望我已经提供了足够的细节来找到解决方案。提前致谢!

sql-server
  • 1 个回答
  • 59 Views
Martin Hope
tkmagnet
Asked: 2023-09-13 23:56:10 +0800 CST

将 2 个计数列与大小写进行比较

  • 5

我有两张桌子,尺寸和费用。我的查询对成本进行了大于比较的计数,并对不同的大小进行了计数。

表 1:尺寸 u
表 2:信用 t

这是我的查询:
select u.size as size
,count(u.size) * .4 as "40% of size"
,count(case when (t.cred * 12) > (t.inc *.3) then 1 结束)作为
来自 cred t 的 “30% 成本”, 在 t.id = u.id group by u.size
上加入 size u

结果如下:

尺寸 尺寸的 40% 30% 费用
0 75.6 50
1 470.4 160
2 414.8 114
3 202.8 59
4 40 21
5 8.8 9
6 0.4 1

我希望查询在成本列大于大小列时显示“Y”,如果较小则显示“N”。这就是我正在寻找的结果:

尺寸 尺寸的 40% 30% 费用 是/否
0 75.6 50 氮
1 470.4 160 氮
2 414.8 114 氮
3 202.8 59 氮
4 40 21 氮
5 8.8 9 是
6 0.4 1 是

有没有办法展示这一点?我尝试使用以下内容,但我得到了这个:布尔值不能与非布尔值一起运算。

,case when ((t.cred * 12) > (t.inc * .3)) > (count(u.size) * .4) then 'Y' else 'N' 以“Y/N”结束
不确定如果我需要做子查询?

sql-server
  • 2 个回答
  • 35 Views
Martin Hope
tkmagnet
Asked: 2023-09-08 04:46:06 +0800 CST

根据每个 ID 的值查找百分比

  • 7

我的 table1 有 2 个 ID,每个 ID 有 2 个值(Y,N)。我可以通过以下查询来计算值:

select id
 ,count(*) as "total"
 ,choice
from table1
where id in (1,8)
group by id, choice

我得到以下结果:

ID 全部的 选择
1 55 氮
1 17 号 是
8 第319章 氮
8 123 是

有没有办法编写一个查询,为我提供每个 id 的每个值 (Y,N) 的百分比?
(id1:55/55+17(N)、17/55+17(Y)等)

期望的结果:

ID 全部的 选择 百分
1 55 氮 0.236
1 17 号 是 0.764
8 第319章 氮 0.7222
8 123 是 0.278

我还需要在查询中使用 count(*) 吗?

query
  • 2 个回答
  • 24 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve