sql查询以查找重复的记录和count中的折扣,条件和

0md85ypi  于 2021-08-13  发布在  Java
关注(0)|答案(3)|浏览(495)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

11个月前关门了。
改进这个问题
我使用下面的sql查询来统计记录。我想在拿到票后把复制的睾丸打折扣。
例子:

select count (*) from PRODUCT MP
   join PRODUCT_UOM pu on pu.PRODUCT_KEY = mp.PRODUCT_KEY
   join UOM u on u.UOM_ID = pu.UOM_ID
   join PRODUCT_BARCODE pb on pb.PRODUCT_UOM_KEY = pu.PRODUCT_UOM_KEY

查询选择*时的excel数据如下所示:

我想对testid和name重复的记录打折扣。
总计数=6-2=4
我知道有明确的查询,我可以使用,但我不知道如何使条件与2列,当重复,然后不计算他们。

jm2pwxwz

jm2pwxwz1#

一些数据库(即mysql)支持 count(distinct) ,所以你可以:

select count(testid, name) cnt
from product mp
join product_uom pu on pu.product_key = mp.product_key
join uom u on u.uom_id = pu.uom_id
join product_barcode pb on pb.product_uom_key = pu.product_uom_key

请注意,您应该用列名所属的表限定列名,以使查询更清楚并避免歧义。另一种选择是连接列并使用 count(distinct) . 您需要选择一个分隔符,该分隔符不会出现在要连接的字符串中,以避免“假”重复:

select count(distinct concat(testid, '###', name)) cnt
from product mp
join product_uom pu on pu.product_key = mp.product_key
join uom u on u.uom_id = pu.uom_id
join product_barcode pb on pb.product_uom_key = pu.product_uom_key

你也可以使用 distinct 在子查询中,然后 count() :

select count(*) cnt
from (
    select distinct testid, name 
    from product mp
    join product_uom pu on pu.product_key = mp.product_key
    join uom u on u.uom_id = pu.uom_id
    join product_barcode pb on pb.product_uom_key = pu.product_uom_key
) t
dgsult0t

dgsult0t2#

可以重用现有查询。例如:

select count(*) from (
  select distinct testid, name 
  from PRODUCT MP
  join PRODUCT_UNIT pu on pu.PRODUCT_KEY = mp.PRODUCT_KEY
  join UNITu on u.UNIT_ID = pu.UNIT_ID
  join PRODUCT_BAR pb on pb.PRODUCT_UNIT_KEY = pu.PRODUCT_UNIT_KEY
) x

现有查询充当表expresison,但您需要替换 COUNT(*)DISTINCT TESTID, NAME .

u1ehiz5o

u1ehiz5o3#

如果只是 count 这对你来说很重要 GROUP BYTESTID, NAME 然后计算查询中的行数,如下所示:

SELECT count(t.*) from (

   select * from PRODUCT MP
   join PRODUCT_UNIT pu on pu.PRODUCT_KEY = mp.PRODUCT_KEY
   join UNIT u on u.UNIT_ID = pu.UNIT_ID
   join PRODUCT_BAR pb on pb.PRODUCT_UNIT_KEY = pu.PRODUCT_UNIT_KEY

   GROUP BY TESTID, NAME
) t;

相关问题