创建作为查询结果的表

时间:2014-05-30 12:29:12

标签: mysql sql count create-table

有2个表:

CREATE TABLE INVOICES
(
    ID INT auto_increment,
    `DATE` DATE,
    Company INT,
    Amount DECIMAL(7,2),
    PRIMARY KEY (ID)
);

INSERT INTO INVOICES(`DATE`,Company,Amount)
VALUES
('2014-01-02', 222, 19500.00),
('2014-01-02', 222, 29205),
('2014-01-07', 222, 152.50),
('2014-01-07', 223, 6590),
('2014-01-07', 223, 4999),
('2014-01-09', 224, 720.60),
('2014-01-09', 225, 1100),
('2014-02-05', 226, 885),
('2014-02-05', 222, 9678.7);

create table Companies 
(
    ID  int,
    Name    varchar(100),
    City    varchar(100),
    c_size varchar(100),
    PRIMARY KEY (ID)
);

insert into Companies(ID, Name, city, c_size) 
values
(222, 'Karma LLC','CITY2', 'big'),
(223, 'Manny Ind.','CITY1', 'medium'),
(224, 'Random PLC','CITY1', 'medium'),
(225, 'Hijack LLC','CITY1', 'medium'),
(226, 'Travels LLC','CITY1', 'small'),
(227, 'Mirana Ind.','CITY2', 'small'),
(228, 'Polla Ind.','CITY3', 'small'),
(229, 'Americano LLC','CITY3', 'small'),
(230, 'Macaroni LLC','CITY4', 'small');

我的目标是写一个查询,说明发票的1月份有多少公司支付了金额(金额)> 10000。 我知道有2家公司的发票超过10k,但idk如何查询它,所以我决定写查询:

select sum(brutto) as sum_january,Name,`DATE` from INVOICES,COMPANIES where INVOICES.Company=Companies.ID and MONTH(`DATE`)=01 group by Company;

对于每个公司,它为1月份的金额(金额)制作了很好的表格,所以我虽然很容易查询这个表格如下:

SELECT count(1) FROM new_table where sum_january > 10000;

但是当我尝试制作时:

CREATE new_table as select sum(brutto) as sum_january,Name,`DATE` from INVOICES,COMPANIES where INVOICES.Company=Companies.ID and MONTH(`DATE`)=01 group by Company;

有一个错误: " ERROR 1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,使用“&_99; new_table”作为sum_january,名称,来​​自INVOICES,Compani'的名称,DATE。在第1行"

我不知道该怎么做。 有没有其他想法让所有公司获得1月发票> 10000?为什么我的方式不起作用?

编辑:没有" TABLE"在" CREATE"在上一次查询中......我已经完成了。

1 个答案:

答案 0 :(得分:1)

这是一个select声明,可以让所有公司在1月份发票金额超过10000的发票:

select 
  COMPANIES.Name,
  sum(INVOICES.Amount) as sum_january
from 
  INVOICES
inner join
  COMPANIES on INVOICES.Company=COMPANIES.ID and 
  MONTH(INVOICES.DATE)=1 
GROUP BY 
  COMPANIES.Name
HAVING
  sum(INVOICES.Amount) > 10000

如果要将其保存到另一个表中,请写:

CREATE TABLE new_table as (select...)

CREATE TEMPORARY TABLE IF NOT EXISTS new_table AS (selec...)