SQL使用GROUP BY获得最小值,最大值和平均值

时间:2018-09-27 17:31:14

标签: sql

我有一个看起来像这样的表

╔═════════╤══════════╗
║ user_id │ quantity ║
╠═════════╪══════════╣
║ 5       │ 1        ║
╟─────────┼──────────╢
║ 5       │ 5        ║
╟─────────┼──────────╢
║ 5       │ 9        ║
╟─────────┼──────────╢
║ 6       │ 0        ║
╟─────────┼──────────╢
║ 6       │ 1        ║
╟─────────┼──────────╢
║ 7       │ NULL     ║
╟─────────┼──────────╢
║ 7       │ 2        ║
╟─────────┼──────────╢
║ 7       │ NULL     ║
╟─────────┼──────────╢
║ 7       │ 5        ║
╟─────────┼──────────╢
║ 7       │ 0        ║
╟─────────┼──────────╢
║ 7       │ 1        ║
╚═════════╧══════════╝

我想创建一个使用GROUP BY的查询,以生成如下所示的结果:

╔═════════╤════════════════╤══════════════╤══════════════╤══════════════════╗
║ user_id │ quantity_total │ quantity_min │ quantity_max │ quantity_average ║
╠═════════╪════════════════╪══════════════╪══════════════╪══════════════════╣
║ 5       │ 15             │ 1            │ 9            │ 5                ║
╟─────────┼────────────────┼──────────────┼──────────────┼──────────────────╢
║ 6       │ 1              │ 0            │ 1            │ 0.5              ║
╟─────────┼────────────────┼──────────────┼──────────────┼──────────────────╢
║ 7       │ 8              │ 0            │ 5            │ 2                ║
╚═════════╧════════════════╧══════════════╧══════════════╧══════════════════╝

请注意,有些随机字段的值可能为NULL,将被跳过,而在最小值,最大值或平均值中将忽略它们,而。预先感谢您的指导!

1 个答案:

答案 0 :(得分:1)

SELECT  user_ID, sum(quantity) as quantiy_total, min(quantity) as quantiy_min ,
    max(quantity) as quantity_max, avg(quantity) as quantity_avg
FROM TABLE1
GROUP BY ( user_ID)