gpt4 book ai didi

具有左外连接和平均值的mysql查询

转载 作者:可可西里 更新时间:2023-11-01 08:18:43 24 4
gpt4 key购买 nike

我在 mysql 中有两个表。第一个表是名称具有以下日期:

    name           service         number
carlos telephone 6
juan watter 12
maria gas 23
jhon hostal 17
marcos sleeping 21
carlos othercarlos 12
other other 13

我还有其他表别名

    name             service         alias              price
carlos telephone telephone-carlos 700
carlos sleeping sleeping-carlos 300
juan watter watter-juan 900
maria gas gas-maria 650
jhon hostal hostal-jhon 700

我需要一个包含名称、别名、号码和王子的 View 。但是我需要名称中的所有行,我打算使用左外连接。但问题是,当我查询 othercarlos 时,我需要价格是 carlos 服务的平均值,而当名称是 other 时,我需要出现所有服务的平均值。但是显示为null

http://sqlfiddle.com/#!2/c1d4f/1

我创建了这个表和我的查询

最佳答案

好的,我相信有更好的方法可以做到这一点,但我至少可以为您提供一种方法:

SELECT  t1.name, 
t1.service,
t2.alias,
t1.number,
COALESCE(t2.price,t3.price,t4.price) AS price
FROM name t1
LEFT JOIN alias t2
ON t1.name= t2.name
AND t1.service = t2.service
LEFT JOIN ( SELECT name, AVG(price) AS price
FROM alias
GROUP BY name) t3
ON t1.name = t3.name
LEFT JOIN ( SELECT AVG(price) AS price
FROM alias) t4
ON t1.name = 'other'

Here is a fiddle有了这个。

结果:

╔════════╦═════════════╦══════════════════╦════════╦═══════╗
║ NAME ║ SERVICE ║ ALIAS ║ NUMBER ║ PRICE ║
╠════════╬═════════════╬══════════════════╬════════╬═══════╣
║ carlos ║ telephone ║ telephone-carlos ║ 6 ║ 700 ║
║ juan ║ watter ║ watter-juan ║ 12 ║ 900 ║
║ maria ║ gas ║ gas-maria ║ 15 ║ 250 ║
║ jhon ║ hostal ║ hostal-jhon ║ 21 ║ 640 ║
║ carlos ║ sleeping ║ sleeping-carlos ║ 24 ║ 300 ║
║ carlos ║ othercarlos ║ (null) ║ 11 ║ 500 ║
║ other ║ (null) ║ (null) ║ 2 ║ 558 ║
╚════════╩═════════════╩══════════════════╩════════╩═══════╝

关于具有左外连接和平均值的mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16970424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com