计算具有相同值SQL的行

时间:2019-09-19 11:25:22

标签: sql

因此,我有一个StockDistribution的{​​{1}}表。我的StockBatch中有一个StockBatch。许多批次具有相同的mv_id,所以我想计算一个mv_id

中有多少mv_id

我已经尝试过了:

StockBatch

甚至尝试过:

SELECT sd.code, COUNT(*) as count, sb.mv_id
FROM stock_distributions sd
INNER JOIN stock_batches sb ON sd.stock_batch_id = sb.id 
GROUP BY sd.code, sb.merchant_variant_id

但是它不起作用,即使假定不是SELECT sd.code, COUNT(sb.mv_id) as count ,它也会返回1

3 个答案:

答案 0 :(得分:0)

  

许多批次具有相同的mv_id,所以我想计算一个批次中有多少个mv_id

这听起来像与COUNT(DISTINCT)的聚合:

SELECT sd.stock_batch_id, COUNT(DISTINCT sb.mv_id)
FROM stock_distributions sd INNER JOIN
     stock_batches sb
     ON sd.stock_batch_id = sb.id 
GROUP BY sd.stock_batch_id;

但是,这令人困惑。每个“库存批次”是否有一行?如果是这样,mv_id已经存储在该行上,所以我看不到如何有多个值。

答案 1 :(得分:0)

您需要使用COUNT(DISTINCT)。

SELECT sd.stock_batch_id
       , COUNT(DISTINCT sb.mv_id) 
FROM stock_distributions sd 
INNER JOIN stock_batches sb 
ON sd.stock_batch_id = sb.id 
GROUP BY sd.stock_batch_id;

答案 2 :(得分:0)

您的问题需要更多的说明,请共享示例输入数据和所需的输出。 如果您要计数唯一的sb.mv_id,则将计数替换为COUNT(DISTINCT sb.mv_id)

尝试以下代码:

SELECT sd.stock_batch_id,sb.id, COUNT(sb.mv_id)
FROM stock_distributions sd INNER JOIN
     stock_batches sb
     ON sd.stock_batch_id = sb.id 
GROUP BY sb.id;
相关问题