按两列分组记录

问题描述 投票:0回答:3

我有一张名为“发票”的表格。我想总结金额,并按公司和日期分组

+------------+------------------+-------------+-----------+
| company_id | company          | date        | amount    |
+------------+--------------------------------+-----------+
|    1       | chevrolet        | 2017-11-18  |   100     |
|    1       | chevrolet        | 2017-11-18  |   -70     |
|    1       | chevrolet        | 2017-11-25  |   50      |
|    2       | mercedes         | 2017-04-01  |   30      |
|    2       | mercedes         | 2017-04-01  |   -30     |
|    2       | mercedes         | 2017-09-01  |   50      |
|    3       | toyota           | 2017-05-12  |   60      |
+------------+------------------+-------------+-----------+

期望的结果是:

+------------+------------------+-------------+-----------+
| company_id | model_name       | date        | amount    |
+------------+--------------------------------+-----------+
|    1       | chevrolet        | 2017-11-18  |   30      |
|    1       | chevrolet        | 2017-11-25  |   50      |
|    2       | mercedes         | 2017-04-01  |   0       |
|    2       | mercedes         | 2017-09-01  |   50      |
|    3       | toyota           | 2017-05-12  |   60      |
+------------+------------------+-------------+-----------+

我该怎么做?

mysql sql
3个回答
1
投票

你已经有英文版的规范,它只需要转换为SQL:

select company_id, model_name, date, sum(amount) as amount
from invoices
group by company_id, model_name, date

在MySQL中你可以(根据它的配置方式)在没有GROUP BY行的情况下离开,你可能会在你的MySQL旅行中看到这样的SQL:

select company_id, model_name, date, sum(amount) as amount
from invoices

MySQL隐式地为你插入组。我个人总是建议明确地把它放进去,因为很少有其他数据库做“自动分组”并坚持使用标准SQL使你的SQL知识更加便携。您可能还会发现“我应该永远是隐含的”这一论点的坚定支持者,我承认,这个论点有其优点:)


0
投票

一起

SELECT 
SUM (amount) 
FROM <table-name> 
GROUP BY company, date;

按公司分组

SELECT 
SUM (amount) 
FROM <table-name> 
GROUP BY company;

按日期分组

SELECT 
SUM (amount) 
FROM <table-name> 
GROUP BY date;

0
投票

使用以下:

SELECT company_id, model_name, date , SUM(amount) AS amount 
             FROM invoices GROUP BY company, date;

有关here子句和示例的更多信息,请参阅hereGROUP BY

© www.soinside.com 2019 - 2024. All rights reserved.