Sql,在转义where条件时获取组的平均值

Sql,在转义where条件时获取组的平均值,sql,group-by,average,Sql,Group By,Average,请原谅我的英语,但没有人能用法语回答;-) 我正在做这个请求: SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p, catalog.id_marchand, catalog.id_product, catalog.price AS c_price, catalog.img_src, tyd.login AS tyd_l FROM catalog INNER JOIN t

请原谅我的英语,但没有人能用法语回答;-)

我正在做这个请求:

SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p, 
       catalog.id_marchand, catalog.id_product, catalog.price AS c_price,
       catalog.img_src, tyd.login AS tyd_l
  FROM catalog 
 INNER JOIN tyd ON catalog.id_marchand = tyd.id_marchand 
               AND catalog.id_product = tyd.id_product
 WHERE tyd.login = "user1@tyd.fr"
   AND tyd.step = "0"
 GROUP BY catalog.id_product, catalog.id_marchand
当然,AVG&COUNT函数不起作用,因为我的条件是只能得到一行

我想做的是仍然得到我的唯一行,但得到的平均值和计数功能的工作。我可以用两个查询,但我更喜欢一个

我希望你能帮助我

谢谢

附言:我在回答3中提出了另一个问题。我快发疯了

试试看

SELECT 
    AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p,
    catalog.id_marchand, catalog.id_product, catalog.price AS c_price, 
    catalog.img_src, tyd.login AS tyd_l
FROM catalog 
INNER JOIN tyd ON catalog.id_marchand = tyd.id_marchand 
              AND catalog.id_product =   tyd.id_product
              AND tyd.step = "0" 
GROUP BY catalog.id_product, catalog.id_marchand
HAVING tyd.login = "user1@tyd.fr"

您应该包括GROUPBY子句中不属于聚合函数的所有列

SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt_id_p,  
       catalog.id_marchand, catalog.id_product, catalog.price AS c_price, 
       catalog.img_src, tyd.login AS tyd_l 
  FROM catalog  
 INNER JOIN tyd ON catalog.id_marchand = tyd.id_marchand  
               AND catalog.id_product = tyd.id_product 
 WHERE tyd.login = "user1@tyd.fr" 
   AND tyd.step = "0" 
 GROUP BY catalog.id_marchand, catalog.id_product, catalog.price AS c_price, 
       catalog.img_src, tyd.login 

很抱歉再次询问,但我使用相同的请求加入另一个表,如下所示:

    SELECT AVG(tyd.price) AS avg_price, COUNT(tyd.id_product) AS cnt, tyd.id_marchand, tyd.id_product, catalog.price AS c_price, tyd.price AS t_price, tyd.amount AS t_am, pro_tyd.amount AS p_am, pro_tyd.price AS p_price, catalog.img_src,  tyd.step, tyd.login AS tyd_l
    FROM catalog 
    INNER JOIN tyd
    ON catalog.id_marchand = tyd.id_marchand 
    AND catalog.id_product =   tyd.id_product
    AND tyd.step = "1" 
    INNER JOIN pro_tyd 
    ON tyd.id_marchand = pro_tyd.id_marchand 
    AND tyd.id_product = pro_tyd.id_product
    GROUP BY catalog.id_product, catalog.id_marchand
    HAVING tyd.login = "user1@tyd.fr"
而且它只在tyd.login=”时起作用user3@tyd.fr“哪个是较低的id。不适用于user1或user2…我只是不明白为什么

这是表格:

id/id\u marchand/id\u product/login/price/amount/delay/step/time

29/1/1/user3@tyd.fr/344/1/0/1/1343297500

120/1/1/user2@tyd.fr/54/1/0/1/1343297504

109/1/1/user10@tyd.fr/34/1/0/1/1343298598


使用tyd.login=”时user3@tyd.fr“它工作得很好。当user1或user2时,我得到了0行

多谢各位!我已经找了两天了!因为你是新来的,我记得如果你认为它解决了你的问题,你应该这么做。对不起,这是一个错误的操作。。。!你能检查一下我的答案吗?我仍然有一个问题。如果之前的答案是有效的,那么这个答案是无效的。我只得到所选行的平均值。事实上,它只取第一行,不管ID的值或其他什么…你是新来的,所以我给你一些建议。如果问题已经得到回答和解决,请不要更改您的问题。如果你需要“增加”你的问题,发布另一个问题并参考先前的答案:)这就是我在这里做的:谢谢你的建议!