数据的准备
--表格创建
CREATE TABLE product(
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER,
purchase_price INTEGER,
regist_date DATE,
PRIMARY KEY(product_id)
) ;
--数据写入
INSERT INTO product VALUES('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-20');
INSERT INTO product VALUES('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
INSERT INTO product VALUES('0003', '运动T恤', '衣服', 4000, 2800, NULL);
INSERT INTO product VALUES('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
INSERT INTO product VALUES('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-15');
INSERT INTO product VALUES('0006', '叉子', '厨房用具', 500, NULL, '2009-09-20');
INSERT INTO product VALUES('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
INSERT INTO product VALUES('0008', '圆珠笔', '办公用品', 100, NULL, '2009-11-11');
编写一条SQL语句,从product(商品)表中选取出“登记日期(regist在2009年4月28日之后”的商品,查询结果要包含product_name和regist_date两列。
SELECT product_name,regist_date
FROM product
WHERE regist_date >'2009-04-28';
SELECT product_name,sale_price,purchase_price
FROM product
WHERE sale_price >=purchase_price+500;
请写出一条SELECT语句,从product表中选取出满足“销售单价打九折之后利润高于100日元的办公用品和厨房用具”条件的记录。查询结果要包括product_name列、product_type列以及销售单价打九折之后的利润(别名设定为profit)。
提示:销售单价打九折,可以通过saleprice列的值乘以0.9获得,利润可以通过该值减去purchase_price列的值获得。
SELECT product_name,product_type,(sale_price*0.9-purchase_price) AS 'profit' FROM product WHERE (profit>100 AND (product_type='办公用品' OR product_type='厨房用具')
)
product_name不能进行聚合,WHERE语句需要在GROUP BY之前,GROUP BY字段和SELECT字段不同(GROUP BY具有分组功能)。
SELECT
product_type,
SUM( sale_price ),
SUM( purchase_price )
FROM
product
GROUP BY
product_type
HAVING
SUM( sale_price ) > SUM( purchase_price ) * 1.5
ORDER BY进行排序
SELECT *
FROM product
ORDER BY regist_date DESC, sale_price;