首页 >> 中医丰胸

使用函数牛

中医丰胸  2021年09月06日  浏览:5 次

如果不能创建辅助表,那么使用表表达式并生成连续数会比较容易,像这样: SELECT ITEM_NAME, PRICE_PER_ITEM FROM SALE_ITEM JOIN (SELECT ROW_NUMBER() OVER() AS NUM FROM BLES) AS NUMBER_SEQON NUMBER_M = SALE_EM_QUANTITYORDER BY PRICE_PER_ITEM DESC

结果完全一样,不过性能上慢了一点。

如何使用日历表简化查询

我从 [article on Pivot Tables] 中摘出了这个例子。首先,让我们创建一个表,并插入一些数据:

CREATE TABLE BUSINESS_TRIP(EMPLOYEE_ID INT NOT NULL, DATE_FROM DATE NOT NULL, DATE_TO DATE NOT NULL);INSERT INTO BUSINESS_TRIP VALUES(1, DATE(\'01/06/2003\'), DATE(\'01/10/2003\')),(1, DATE(\'01/13/2003\'), DATE(\'01/17/2003\')),(1, DATE(\'01/20/2003\'), DATE(\'01/24/2003\')),(1, DATE(\'01/27/2003\'), DATE(\'01/31/2003\')),(2, DATE(\'01/07/2003\'), DATE(\'01/08/2003\')),(3, DATE(\'01/08/2003\'), DATE(\'01/09/2003\'));

假设有一个简单的任务:“选择 2003 年 1 月份没有雇员出差的所有日子”,这时日历表 DATE_SEQ 就很好用了。

其中以阿里、京东、腾讯电商等为主。电商通过频繁的商品实时交易和数据流的积累 SELECT SOME_DATE AS NOBODY_ON_TRIP FROM DATE_SEQWHERE SOME_DATE BETWEEN DATE(\'01/01/2003\') AND DATE(\'01/31/2003\')AND NOT EXISTS(SELECT * FROM BUSINESS_TRIP WHERE SOME_DATE BETWEEN DATE_FROM AND DATE_TO);NOBODY_ON_TRIP -------------- 01/01/2003 01/02/2003 01/03/2003 01/04/2003 01/05/2003 01/11/2003 01/12/2003 01/18/2003 01/19/2003 01/25/2003 01/26/2003 11 record(s) selected.

这个查询非常简单。在[article on Pivot Tables]中讨论了一些肯定是更复杂的替代方案。

假设有一个类似的任务:“选择 2003 年 1 月份有两名以上雇员在出差的所有日子”,同样,这里日历表 DATE_SEQ 也提供了一个非常容易的方法:

SELECT SOME_DATE AS THREE_OR_MORE_ON_TRIP FROM DATE_SEQWHERE SOME_DATE BETWEEN DATE(\'01/01/2003\') AND DATE(\'01/31/2003\')AND (SELECT COUNT(*) FROM BUSINESS_TRIP WHERE SOME_DATE BETWEEN DATE_FROM AND DATE_TO) 2;THREE_OR_MORE_ON_TRIP ------------------- 01/08/2003

同样,如果不能创建辅助表,我们就可以使用表表达式:

SELECT SOME_DATE AS THREE_OR_MORE_ON_TRIP FROM (SELECT DATE(\'01/01/2003\') + ROW_NUMBER() OVER() DAYS AS SOME_DATE FROM BLES) AS DATE_SEQWHERE SOME_DATE BETWEEN DATE(\'01/01/2003\') AND DATE(\'01/31/2003\')AND (SELECT COUNT(*) FROM BUSINESS_TRIP WHERE SOME_DATE BETWEEN DATE_FROM AND DATE_TO) 2;

昆明哪家医院治男科好
小孩消化不良怎么调理
成都癫痫病
友情链接