diff --git common/src/java/org/apache/hadoop/hive/conf/Constants.java common/src/java/org/apache/hadoop/hive/conf/Constants.java index ff9eb59..3d79eec 100644 --- common/src/java/org/apache/hadoop/hive/conf/Constants.java +++ common/src/java/org/apache/hadoop/hive/conf/Constants.java @@ -48,6 +48,7 @@ public static final String DRUID_SEGMENT_VERSION = "druid.segment.version"; public static final String DRUID_JOB_WORKING_DIRECTORY = "druid.job.workingDirectory"; + public static final String KAFKA_TOPIC = "kafka.topic"; public static final String KAFKA_BOOTSTRAP_SERVERS = "kafka.bootstrap.servers"; @@ -55,6 +56,11 @@ /* Kafka Ingestion state - valid values - START/STOP/RESET */ public static final String DRUID_KAFKA_INGESTION = "druid.kafka.ingestion"; + public static final String HIVE_JDBC_QUERY = "hive.sql.generated.query"; + public static final String JDBC_QUERY = "hive.sql.query"; + public static final String JDBC_HIVE_STORAGE_HANDLER_ID = + "org.apache.hive.storage.jdbc.JdbcStorageHandler"; + public static final String HIVE_SERVER2_JOB_CREDSTORE_PASSWORD_ENVVAR = "HIVE_JOB_CREDSTORE_PASSWORD"; public static final String HADOOP_CREDENTIAL_PASSWORD_ENVVAR = "HADOOP_CREDSTORE_PASSWORD"; public static final String HADOOP_CREDENTIAL_PROVIDER_PATH_CONFIG = "hadoop.security.credential.provider.path"; diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java index 6def148..3f11455 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcInputFormat.java @@ -66,7 +66,8 @@ dbAccessor = DatabaseAccessorFactory.getAccessor(job); } - int numRecords = dbAccessor.getTotalNumberOfRecords(job); + //TODOY make sure I am not causing trouble + int numRecords = numSplits <=1 ? Integer.MAX_VALUE : dbAccessor.getTotalNumberOfRecords(job); if (numRecords < numSplits) { numSplits = numRecords; diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java index 88b2f0a..1da6213 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcRecordReader.java @@ -43,7 +43,7 @@ public JdbcRecordReader(JobConf conf, JdbcInputSplit split) { - LOGGER.debug("Initializing JdbcRecordReader"); + LOGGER.trace("Initializing JdbcRecordReader"); this.split = split; this.conf = conf; } @@ -52,14 +52,14 @@ public JdbcRecordReader(JobConf conf, JdbcInputSplit split) { @Override public boolean next(LongWritable key, MapWritable value) throws IOException { try { - LOGGER.debug("JdbcRecordReader.next called"); + LOGGER.trace("JdbcRecordReader.next called"); if (dbAccessor == null) { dbAccessor = DatabaseAccessorFactory.getAccessor(conf); iterator = dbAccessor.getRecordIterator(conf, split.getLimit(), split.getOffset()); } if (iterator.hasNext()) { - LOGGER.debug("JdbcRecordReader has more records to read."); + LOGGER.trace("JdbcRecordReader has more records to read."); key.set(pos); pos++; Map record = iterator.next(); diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java index 3764c8c..7f80534 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcSerDe.java @@ -15,6 +15,7 @@ package org.apache.hive.storage.jdbc; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.conf.Constants; import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.hive.serde2.AbstractSerDe; import org.apache.hadoop.hive.serde2.SerDeException; @@ -63,25 +64,35 @@ @Override public void initialize(Configuration conf, Properties tbl) throws SerDeException { try { - LOGGER.debug("Initializing the SerDe"); + LOGGER.trace("Initializing the SerDe"); if (tbl.containsKey(JdbcStorageConfig.DATABASE_TYPE.getPropertyName())) { + final boolean hiveQueryExecution = tbl.containsKey(Constants.HIVE_JDBC_QUERY); + Configuration tableConfig = JdbcStorageConfigManager.convertPropertiesToConfiguration(tbl); DatabaseAccessor dbAccessor = DatabaseAccessorFactory.getAccessor(tableConfig); columnNames = dbAccessor.getColumnNames(tableConfig); numColumns = columnNames.size(); - - String[] hiveColumnNameArray = parseProperty(tbl.getProperty(serdeConstants.LIST_COLUMNS), ","); - if (numColumns != hiveColumnNameArray.length) { - throw new SerDeException("Expected " + numColumns + " columns. Table definition has " - + hiveColumnNameArray.length + " columns"); - } - List hiveColumnNames = Arrays.asList(hiveColumnNameArray); - - hiveColumnTypeArray = parseProperty(tbl.getProperty(serdeConstants.LIST_COLUMN_TYPES), ":"); - if (hiveColumnTypeArray.length == 0) { - throw new SerDeException("Received an empty Hive column type definition"); + List hiveColumnNames; + if (hiveQueryExecution) { + hiveColumnNames = columnNames; + final List columnTypes = dbAccessor.getColumnTypes(tableConfig); + hiveColumnTypeArray = new String [columnTypes.size()]; + hiveColumnTypeArray = columnTypes.toArray (hiveColumnTypeArray); + } else { + + String[] hiveColumnNameArray = parseProperty(tbl.getProperty(serdeConstants.LIST_COLUMNS), ","); + if (numColumns != hiveColumnNameArray.length) { + throw new SerDeException("Expected " + numColumns + " columns. Table definition has " + + hiveColumnNameArray.length + " columns"); + } + hiveColumnNames = Arrays.asList(hiveColumnNameArray); + + hiveColumnTypeArray = parseProperty(tbl.getProperty(serdeConstants.LIST_COLUMN_TYPES), ":"); + if (hiveColumnTypeArray.length == 0) { + throw new SerDeException("Received an empty Hive column type definition"); + } } List fieldInspectors = new ArrayList(numColumns); @@ -115,7 +126,7 @@ public void initialize(Configuration conf, Properties tbl) throws SerDeException @Override public Object deserialize(Writable blob) throws SerDeException { - LOGGER.debug("Deserializing from SerDe"); + LOGGER.trace("Deserializing from SerDe"); if (!(blob instanceof MapWritable)) { throw new SerDeException("Expected MapWritable. Got " + blob.getClass().getName()); } diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java index 4b03285..df55272 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/JdbcStorageHandler.java @@ -15,6 +15,7 @@ package org.apache.hive.storage.jdbc; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.conf.Constants; import org.apache.hadoop.hive.metastore.HiveMetaHook; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.metadata.HiveStorageHandler; @@ -124,4 +125,9 @@ public void configureJobConf(TableDesc tableDesc, JobConf jobConf) { } + @Override + public String toString() { + return Constants.JDBC_HIVE_STORAGE_HANDLER_ID; + } + } diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java index c4e97ba..fa17e8b 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/DatabaseType.java @@ -21,5 +21,6 @@ ORACLE, POSTGRES, MSSQL, - METASTORE + METASTORE, + JETHRO_DATA } diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfig.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfig.java index ff6357d..1ccbe08 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfig.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfig.java @@ -18,7 +18,8 @@ DATABASE_TYPE("database.type", true), JDBC_URL("jdbc.url", true), JDBC_DRIVER_CLASS("jdbc.driver", true), - QUERY("query", true), + QUERY("query", false), + TABLE("table", false), JDBC_FETCH_SIZE("jdbc.fetch.size", false), COLUMN_MAPPING("column.mapping", false); diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java index 350b0c6..55fc0ea 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/conf/JdbcStorageConfigManager.java @@ -44,13 +44,12 @@ public static final String CONFIG_USERNAME = CONFIG_PREFIX + ".dbcp.username"; private static final EnumSet DEFAULT_REQUIRED_PROPERTIES = EnumSet.of(JdbcStorageConfig.DATABASE_TYPE, - JdbcStorageConfig.JDBC_URL, - JdbcStorageConfig.JDBC_DRIVER_CLASS, - JdbcStorageConfig.QUERY); + JdbcStorageConfig.JDBC_URL, + JdbcStorageConfig.JDBC_DRIVER_CLASS); private static final EnumSet METASTORE_REQUIRED_PROPERTIES = EnumSet.of(JdbcStorageConfig.DATABASE_TYPE, - JdbcStorageConfig.QUERY); + JdbcStorageConfig.QUERY); private JdbcStorageConfigManager() { } @@ -120,6 +119,12 @@ public static String getConfigValue(JdbcStorageConfig key, Configuration config) public static String getQueryToExecute(Configuration config) { String query = config.get(JdbcStorageConfig.QUERY.getPropertyName()); + + if (query == null) { + String tableName = config.get(JdbcStorageConfig.TABLE.getPropertyName()); + query = "select * from " + tableName; + } + String hiveFilterCondition = QueryConditionBuilder.getInstance().buildCondition(config); if ((hiveFilterCondition != null) && (!hiveFilterCondition.trim().isEmpty())) { query = query + " WHERE " + hiveFilterCondition; diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessor.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessor.java index f50d53e..b0b87f0 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessor.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessor.java @@ -23,6 +23,8 @@ public interface DatabaseAccessor { List getColumnNames(Configuration conf) throws HiveJdbcDatabaseAccessException; + + List getColumnTypes(Configuration conf) throws HiveJdbcDatabaseAccessException; int getTotalNumberOfRecords(Configuration conf) throws HiveJdbcDatabaseAccessException; diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java index 7dc690f..6d3c8d9 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/DatabaseAccessorFactory.java @@ -35,6 +35,9 @@ public static DatabaseAccessor getAccessor(DatabaseType dbType) { case MYSQL: accessor = new MySqlDatabaseAccessor(); break; + case JETHRO_DATA: + accessor = new JethroDatabaseAccessor(); + break; default: accessor = new GenericJdbcDatabaseAccessor(); diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessor.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessor.java index 178c97d..ca96eff 100644 --- jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessor.java +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/GenericJdbcDatabaseAccessor.java @@ -16,6 +16,7 @@ import org.apache.commons.dbcp.BasicDataSourceFactory; import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hive.serde.serdeConstants; import org.apache.hadoop.io.Text; import org.apache.hadoop.security.Credentials; import org.apache.hadoop.security.UserGroupInformation; @@ -34,6 +35,7 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.Types; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -64,8 +66,7 @@ public GenericJdbcDatabaseAccessor() { try { initializeDatabaseConnection(conf); - String sql = JdbcStorageConfigManager.getQueryToExecute(conf); - String metadataQuery = addLimitToQuery(sql, 1); + String metadataQuery = getMetaDataQuery(conf); LOGGER.debug("Query to execute is [{}]", metadataQuery); conn = dbcpDataSource.getConnection(); @@ -92,6 +93,77 @@ public GenericJdbcDatabaseAccessor() { } + protected String getMetaDataQuery(Configuration conf) { + String sql = JdbcStorageConfigManager.getQueryToExecute(conf); + String metadataQuery = addLimitToQuery(sql, 1); + return metadataQuery; + } + + @Override + public List getColumnTypes(Configuration conf) throws HiveJdbcDatabaseAccessException { + Connection conn = null; + PreparedStatement ps = null; + ResultSet rs = null; + + try { + initializeDatabaseConnection(conf); + String metadataQuery = getMetaDataQuery(conf); + LOGGER.debug("Query to execute is [{}]", metadataQuery); + + conn = dbcpDataSource.getConnection(); + ps = conn.prepareStatement(metadataQuery); + rs = ps.executeQuery(); + + ResultSetMetaData metadata = rs.getMetaData(); + int numColumns = metadata.getColumnCount(); + List columnTypes = new ArrayList(numColumns); + for (int i = 0; i < numColumns; i++) { + switch (metadata.getColumnType(i + 1)) { + case Types.CHAR: + columnTypes.add(serdeConstants.STRING_TYPE_NAME); + break; + case Types.INTEGER: + columnTypes.add(serdeConstants.INT_TYPE_NAME); + break; + case Types.BIGINT: + columnTypes.add(serdeConstants.BIGINT_TYPE_NAME); + break; + case Types.DECIMAL: + columnTypes.add(serdeConstants.DECIMAL_TYPE_NAME); + break; + case Types.FLOAT: + case Types.REAL: + columnTypes.add(serdeConstants.FLOAT_TYPE_NAME); + break; + case Types.DOUBLE: + columnTypes.add(serdeConstants.DOUBLE_TYPE_NAME); + break; + case Types.DATE: + columnTypes.add(serdeConstants.DATE_TYPE_NAME); + break; + case Types.TIMESTAMP: + columnTypes.add(serdeConstants.TIMESTAMP_TYPE_NAME); + break; + + default: + columnTypes.add(metadata.getColumnTypeName(i+1)); + break; + }; + } + + return columnTypes; + } + catch (Exception e) { + LOGGER.error("Error while trying to get column names.", e); + throw new HiveJdbcDatabaseAccessException("Error while trying to get column names: " + e.getMessage(), e); + } + finally { + cleanupResources(conn, ps, rs); + } + + } + + @Override public int getTotalNumberOfRecords(Configuration conf) throws HiveJdbcDatabaseAccessException { Connection conn = null; diff --git jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JethroDatabaseAccessor.java jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JethroDatabaseAccessor.java new file mode 100644 index 0000000..60f6612 --- /dev/null +++ jdbc-handler/src/main/java/org/apache/hive/storage/jdbc/dao/JethroDatabaseAccessor.java @@ -0,0 +1,32 @@ +package org.apache.hive.storage.jdbc.dao; + +import org.apache.hadoop.conf.Configuration; +import org.apache.hive.storage.jdbc.conf.JdbcStorageConfigManager; + +/** + * JethroData specific data accessor. This is needed because JethroData JDBC drivers do not support generic LIMIT and OFFSET + * escape functions, and has some special optimization for getting the query metadata using limit 0. + */ + +public class JethroDatabaseAccessor extends GenericJdbcDatabaseAccessor { + + @Override + protected String addLimitAndOffsetToQuery(String sql, int limit, int offset) { + if (offset == 0) { + return addLimitToQuery(sql, limit); + } else { + return sql + " LIMIT " + offset + "," + limit; + } + } + + @Override + protected String addLimitToQuery(String sql, int limit) { + return "Select * from (" + sql + ") as \"tmp\" limit " + limit; + } + + @Override + protected String getMetaDataQuery(Configuration conf) { + String sql = JdbcStorageConfigManager.getQueryToExecute(conf); + return addLimitToQuery(sql, 0); + } +} diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index c8cb8a4..80e3dc9 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -5356,6 +5356,7 @@ public static boolean doesTableNeedLocation(Table tbl) { String sh = tbl.getStorageHandler().toString(); retval = !sh.equals("org.apache.hadoop.hive.hbase.HBaseStorageHandler") && !sh.equals(Constants.DRUID_HIVE_STORAGE_HANDLER_ID) + && !sh.equals(Constants.JDBC_HIVE_STORAGE_HANDLER_ID) && !sh.equals("org.apache.hadoop.hive.accumulo.AccumuloStorageHandler"); } return retval; diff --git ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java index 6e585e5..df218ec 100644 --- ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java +++ ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveMaterializedViewsRegistry.java @@ -419,18 +419,26 @@ private static RelNode parseQuery(HiveConf conf, String viewQuery) { } private static TableType obtainTableType(Table tabMetaData) { - if (tabMetaData.getStorageHandler() != null && - tabMetaData.getStorageHandler().toString().equals( - Constants.DRUID_HIVE_STORAGE_HANDLER_ID)) { - return TableType.DRUID; + if (tabMetaData.getStorageHandler() != null) { + final String storageHandlerStr = tabMetaData.getStorageHandler().toString(); + if (storageHandlerStr.equals(Constants.DRUID_HIVE_STORAGE_HANDLER_ID)) { + return TableType.DRUID; + } + + if (storageHandlerStr.equals(Constants.JDBC_HIVE_STORAGE_HANDLER_ID)) { + return TableType.JDBC; + } + } + return TableType.NATIVE; } //@TODO this seems to be the same as org.apache.hadoop.hive.ql.parse.CalcitePlanner.TableType.DRUID do we really need both private enum TableType { DRUID, - NATIVE + NATIVE, + JDBC } private enum OpType { diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/functions/HiveSqlCountAggFunction.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/functions/HiveSqlCountAggFunction.java index c5c17de..9e344ef 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/functions/HiveSqlCountAggFunction.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/functions/HiveSqlCountAggFunction.java @@ -29,6 +29,7 @@ import org.apache.calcite.sql.SqlFunctionCategory; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.SqlSplittableAggFunction; +import org.apache.calcite.sql.SqlSyntax; import org.apache.calcite.sql.SqlSplittableAggFunction.CountSplitter; import org.apache.calcite.sql.SqlSplittableAggFunction.Registry; import org.apache.calcite.sql.fun.SqlStdOperatorTable; @@ -66,6 +67,11 @@ public HiveSqlCountAggFunction(boolean isDistinct, SqlReturnTypeInference return public boolean isDistinct() { return isDistinct; } + + @Override + public SqlSyntax getSyntax() { + return SqlSyntax.FUNCTION_STAR; + } @Override public T unwrap(Class clazz) { diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveJdbcConverter.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveJdbcConverter.java new file mode 100644 index 0000000..46309b6 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveJdbcConverter.java @@ -0,0 +1,96 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.reloperators; + +import java.util.List; + +import org.apache.calcite.adapter.java.JavaTypeFactory; +import org.apache.calcite.adapter.jdbc.JdbcConvention; +import org.apache.calcite.adapter.jdbc.JdbcImplementor; +import org.apache.calcite.adapter.jdbc.JdbcRel; +import org.apache.calcite.plan.ConventionTraitDef; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelVisitor; +import org.apache.calcite.rel.convert.ConverterImpl; +import org.apache.calcite.sql.SqlDialect; + + +/** + * This is a designated RelNode that splits the Hive operators and the Jdbc operators, + * every successor of this node will be Jdbc operator. + * + */ +public class HiveJdbcConverter extends ConverterImpl implements HiveRelNode { + + final private JdbcConvention _convention; + + public HiveJdbcConverter(RelOptCluster cluster, RelTraitSet traits, + JdbcRel input, JdbcConvention jc) { + super(cluster, ConventionTraitDef.INSTANCE, traits, input); + _convention = jc; + } + + private HiveJdbcConverter(RelOptCluster cluster, RelTraitSet traits, + RelNode input, JdbcConvention jc) { + super(cluster, ConventionTraitDef.INSTANCE, traits, input); + _convention = jc; + } + + public JdbcConvention getJdbcConvention () { + return _convention; + } + + public SqlDialect getJdbcDialect() { + return _convention.dialect; + } + + @Override + public void implement(Implementor implementor) { + + } + + @Override + public RelNode copy( + RelTraitSet traitSet, + List inputs) { + return new HiveJdbcConverter(getCluster(), traitSet, sole(inputs), _convention); + } + + public String generateSql() { + SqlDialect dialect = getJdbcDialect(); + final JdbcImplementor jdbcImplementor = + new JdbcImplementor(dialect, + (JavaTypeFactory) getCluster().getTypeFactory()); + final JdbcImplementor.Result result = + jdbcImplementor.visitChild(0, getInput()); + return result.asStatement().toSqlString(dialect).getSql(); + } + + public JdbcHiveTableScan getTableScan () { + final JdbcHiveTableScan [] tmpJdbcHiveTableScan = new JdbcHiveTableScan[1]; + new RelVisitor() { + + public void visit( + RelNode node, + int ordinal, + RelNode parent) { + if (node instanceof JdbcHiveTableScan && tmpJdbcHiveTableScan [0] == null) { + tmpJdbcHiveTableScan [0] = (JdbcHiveTableScan) node; + } else { + super.visit(node, ordinal, parent); + } + } + }.go(this); + + JdbcHiveTableScan jdbcHiveTableScan = tmpJdbcHiveTableScan [0]; + + assert jdbcHiveTableScan != null; + return jdbcHiveTableScan; + } + + + public JdbcConvention getUnderlyingConvention () { + return (JdbcConvention) getTableScan().getConvention (); + } + +} diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/JdbcHiveTableScan.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/JdbcHiveTableScan.java new file mode 100644 index 0000000..e97a986 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/JdbcHiveTableScan.java @@ -0,0 +1,57 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hive.ql.optimizer.calcite.reloperators; + +import java.util.List; + +import org.apache.calcite.adapter.jdbc.JdbcConvention; +import org.apache.calcite.adapter.jdbc.JdbcTable; +import org.apache.calcite.adapter.jdbc.JdbcTableScan; +import org.apache.calcite.plan.RelOptCluster; +import org.apache.calcite.plan.RelOptTable; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.RelNode; + +/** + * Relational expression representing a scan of a HiveDB collection. + * + *

+ * Additional operations might be applied, using the "find" or "aggregate" methods. + *

+ */ +public class JdbcHiveTableScan extends JdbcTableScan { + + final private HiveTableScan hiveTableScan; + + public JdbcHiveTableScan(RelOptCluster cluster, RelOptTable table, JdbcTable jdbcTable, + JdbcConvention jdbcConvention, HiveTableScan hiveTableScan) { + super(cluster, table, jdbcTable, jdbcConvention); + this.hiveTableScan= hiveTableScan; + } + + @Override public RelNode copy(RelTraitSet traitSet, List inputs) { + assert inputs.isEmpty(); + return new JdbcHiveTableScan( + getCluster(), table, jdbcTable, (JdbcConvention) getConvention(), this.hiveTableScan); + } + + public HiveTableScan getHiveTableScan() { + return hiveTableScan; + } + +} diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelColumnsAlignment.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelColumnsAlignment.java index bccbde5..028c2f2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelColumnsAlignment.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelColumnsAlignment.java @@ -46,6 +46,7 @@ import org.apache.calcite.util.ReflectUtil; import org.apache.calcite.util.ReflectiveVisitor; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; import com.google.common.collect.ImmutableList; @@ -89,6 +90,9 @@ public RelNode align(RelNode root) { } protected final RelNode dispatchAlign(RelNode node, List collations) { + if (node instanceof HiveJdbcConverter) { + return node; + } return alignDispatcher.invoke(node, collations); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCAbstractSplitFilterRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCAbstractSplitFilterRule.java new file mode 100644 index 0000000..3921565 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCAbstractSplitFilterRule.java @@ -0,0 +1,178 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.ArrayList; + +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.plan.RelOptRuleOperand; +import org.apache.calcite.rex.RexBuilder; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexVisitorImpl; +import org.apache.calcite.sql.SqlDialect; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * JDBCAbstractSplitFilterRule split a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter} into + * two {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter} operators where the lower operator + * could be pushed down below the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter}} + * operator and therefore could be sent to the external table. + */ + +public abstract class JDBCAbstractSplitFilterRule extends RelOptRule { + static Logger LOG = LoggerFactory.getLogger(JDBCAbstractSplitFilterRule.class); + + static public JDBCAbstractSplitFilterRule SPLIT_FILTER_ABOVE_JOIN = new JDBCSplitFilterAboveJoinRule (); + static public JDBCAbstractSplitFilterRule SPLIT_FILTER_ABOVE_CONVERTER = new JDBCSplitFilterRule (); + + static public class FilterSupportedFunctionsVisitor extends RexVisitorImpl { + + private final SqlDialect dialect; + + public FilterSupportedFunctionsVisitor (SqlDialect dialect) { + super (true); + this.dialect = dialect; + } + + final private ArrayList validJdbcNode = new ArrayList (); + final private ArrayList invalidJdbcNode = new ArrayList (); + + public ArrayList getValidJdbcNode() { + return validJdbcNode; + } + + public ArrayList getInvalidJdbcNode() { + return invalidJdbcNode; + } + + @Override + public Void visitCall(RexCall call) { + if (call.getKind() == SqlKind.AND) { + return super.visitCall(call); + } else { + boolean isValidCall = JDBCRexCallValidator.isValidJdbcOperation(call, dialect); + if (isValidCall) { + validJdbcNode.add(call); + } else { + invalidJdbcNode.add(call); + } + } + return null; + } + + public boolean canBeSplitted () { + return !validJdbcNode.isEmpty() && !invalidJdbcNode.isEmpty(); + } + } + + protected JDBCAbstractSplitFilterRule (RelOptRuleOperand operand) { + super (operand); + } + + static public boolean canSplitFilter(RexNode cond, SqlDialect dialect) { + FilterSupportedFunctionsVisitor visitor = new FilterSupportedFunctionsVisitor(dialect); + cond.accept(visitor); + return visitor.canBeSplitted(); + } + + public boolean matches(RelOptRuleCall call, SqlDialect dialect) { + LOG.debug("MySplitFilter.matches has been called"); + + final HiveFilter filter = call.rel(0); + + RexNode cond = filter.getCondition (); + + return canSplitFilter(cond, dialect); + } + + public void onMatch(RelOptRuleCall call, SqlDialect dialect) { + LOG.debug("MySplitFilter.onMatch has been called"); + + final HiveFilter filter = call.rel(0); + + RexCall callExpression = (RexCall) filter.getCondition (); + + FilterSupportedFunctionsVisitor visitor = new FilterSupportedFunctionsVisitor(dialect); + callExpression.accept(visitor); + + ArrayList validJdbcNode = visitor.getValidJdbcNode(); + ArrayList invalidJdbcNode = visitor.getInvalidJdbcNode(); + + assert validJdbcNode.size() != 0 && invalidJdbcNode.size() != 0; + + final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); + + RexNode validCondition; + if (validJdbcNode.size() == 1) { + validCondition = validJdbcNode.get(0); + } else { + validCondition = rexBuilder.makeCall(SqlStdOperatorTable.AND, validJdbcNode); + } + + HiveFilter newJdbcValidFilter = new HiveFilter(filter.getCluster(), filter.getTraitSet(), filter.getInput(), validCondition); + + RexNode invalidCondition; + if (invalidJdbcNode.size() == 1) { + invalidCondition = invalidJdbcNode.get(0); + } else { + invalidCondition = rexBuilder.makeCall(SqlStdOperatorTable.AND, invalidJdbcNode); + } + + HiveFilter newJdbcInvalidFilter = new HiveFilter(filter.getCluster(), filter.getTraitSet(), newJdbcValidFilter, invalidCondition); + + call.transformTo(newJdbcInvalidFilter); + } + + public static class JDBCSplitFilterAboveJoinRule extends JDBCAbstractSplitFilterRule { + public JDBCSplitFilterAboveJoinRule() { + super(operand(HiveFilter.class, + operand(HiveJoin.class, + operand(HiveJdbcConverter.class, any())))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + LOG.debug("MyUpperJoinFilterFilter.matches has been called"); + + final HiveJoin join = call.rel(1); + final HiveJdbcConverter conv = call.rel(2); + + RexNode joinCond = join.getCondition (); + + return super.matches(call) && JDBCRexCallValidator.isValidJdbcOperation(joinCond, conv.getJdbcDialect()); + } + + @Override + public void onMatch(RelOptRuleCall call) { + final HiveJdbcConverter conv = call.rel(0); + super.onMatch(call, conv.getJdbcDialect()); + } + } + + public static class JDBCSplitFilterRule extends JDBCAbstractSplitFilterRule { + public JDBCSplitFilterRule() { + super(operand(HiveFilter.class, + operand(HiveJdbcConverter.class, any()))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + final HiveJdbcConverter conv = call.rel(1); + return super.matches(call, conv.getJdbcDialect()); + } + + @Override + public void onMatch(RelOptRuleCall call) { + final HiveJdbcConverter conv = call.rel(1); + super.onMatch(call, conv.getJdbcDialect()); + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCAggregationPushDownRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCAggregationPushDownRule.java new file mode 100644 index 0000000..d58b520e --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCAggregationPushDownRule.java @@ -0,0 +1,75 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.Arrays; + +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcAggregate; +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcAggregateRule; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Aggregate; +import org.apache.calcite.rel.core.AggregateCall; +import org.apache.calcite.sql.SqlAggFunction; +import org.apache.calcite.sql.SqlKind; +import org.apache.hadoop.hive.ql.optimizer.calcite.functions.HiveSqlCountAggFunction; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JDBCAggregationPushDownRule convert a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate} + * into a {@link org.apache.calcite.adapter.jdbc.JdbcRules.JdbcAggregateRule.JdbcAggregate} + * and pushes it down below the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter} + * operator so it will be sent to the external table. + */ + +public class JDBCAggregationPushDownRule extends RelOptRule { + static Logger LOG = LoggerFactory.getLogger(JDBCAggregationPushDownRule.class); + + public static final JDBCAggregationPushDownRule INSTANCE = new JDBCAggregationPushDownRule (); + + public JDBCAggregationPushDownRule() { + super(operand(HiveAggregate.class, + operand(HiveJdbcConverter.class, any()))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + final HiveAggregate agg = call.rel(0); + final HiveJdbcConverter converter = call.rel(1); + + for (AggregateCall relOptRuleOperand : agg.getAggCallList()) { + SqlAggFunction f = relOptRuleOperand.getAggregation(); + if (f instanceof HiveSqlCountAggFunction) { + //count distinct with more that one argument is not supported + HiveSqlCountAggFunction countAgg = (HiveSqlCountAggFunction)f; + if (countAgg.isDistinct() && 1 < relOptRuleOperand.getArgList().size()) { + return false; + } + } + SqlKind kind = f.getKind(); + if (converter.getJdbcDialect().supportsAggregateFunction(kind) == false) { + return false; + } + } + return true; + } + + @Override + public void onMatch(RelOptRuleCall call) { + LOG.debug("MyAggregationPushDownRule.onMatch has been called"); + + final HiveAggregate agg = call.rel(0); + final HiveJdbcConverter converter = call.rel(1); + + Aggregate newHiveAggregate = agg.copy(agg.getTraitSet(), converter.getInput(),agg.getIndicatorCount() !=0,agg.getGroupSet(),agg.getGroupSets(),agg.getAggCallList()); + JdbcAggregate newJdbcAggregate = (JdbcAggregate) new JdbcAggregateRule(converter.getJdbcConvention()).convert(newHiveAggregate); + if (newJdbcAggregate != null) { + RelNode ConverterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcAggregate)); + + call.transformTo(ConverterRes); + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCExtractJoinFilterRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCExtractJoinFilterRule.java new file mode 100644 index 0000000..7f276a9 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCExtractJoinFilterRule.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.core.Join; +import org.apache.calcite.rel.rules.AbstractJoinExtractFilterRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.HiveRelFactories; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; + +/** + * JDBCExtractJoinFilterRule extracts out the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter} + * from a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin} operator. + * if the HiveFilter could be replaced by two HiveFilter operators that one of them could be pushed down below the + * {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter} + */ + + +public final class JDBCExtractJoinFilterRule extends AbstractJoinExtractFilterRule { + //~ Static fields/initializers --------------------------------------------- + final static public JDBCExtractJoinFilterRule INSTANCE = new JDBCExtractJoinFilterRule (); + + //~ Constructors ----------------------------------------------------------- + + /** + * Creates an JoinExtractFilterRule. + */ + public JDBCExtractJoinFilterRule() { + super(operand(HiveJoin.class, + operand(HiveJdbcConverter.class, any()), + operand(HiveJdbcConverter.class, any())), + HiveRelFactories.HIVE_BUILDER, null); + } + + //~ Methods ---------------------------------------------------------------- + + @Override + public boolean matches(RelOptRuleCall call) { + final Join join = call.rel(0); + final HiveJdbcConverter conv1 = call.rel(1); + final HiveJdbcConverter conv2 = call.rel(2); + if (conv1.getJdbcDialect().equals(conv2.getJdbcDialect()) == false) { + return false; + } + return JDBCAbstractSplitFilterRule.canSplitFilter(join.getCondition(), conv1.getJdbcDialect()); + } + +} + +// End JoinExtractFilterRule.java diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCFilterJoinRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCFilterJoinRule.java new file mode 100644 index 0000000..ec564f4 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCFilterJoinRule.java @@ -0,0 +1,54 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.core.Filter; +import org.apache.calcite.rel.core.Join; +import org.apache.hadoop.hive.ql.optimizer.calcite.HiveRelFactories; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; + +/** + * Rule that tries to push filter expressions into a join condition and into + * the inputs of the join. + */ + +public class JDBCFilterJoinRule extends HiveFilterJoinRule { + + final static public JDBCFilterJoinRule INSTANCE = new JDBCFilterJoinRule (); + + + public JDBCFilterJoinRule() { + super(RelOptRule.operand(HiveFilter.class, + RelOptRule.operand(HiveJoin.class, + RelOptRule.operand(HiveJdbcConverter.class, RelOptRule.any()), + RelOptRule.operand(HiveJdbcConverter.class, RelOptRule.any()))), + "JDBCFilterJoinRule", true, HiveRelFactories.HIVE_BUILDER); + } + + @Override + public boolean matches(RelOptRuleCall call) { + Filter filter = call.rel(0); + Join join = call.rel(1); + HiveJdbcConverter conv1 = call.rel(2); + HiveJdbcConverter conv2 = call.rel(3); + + if (conv1.getJdbcDialect().equals(conv2.getJdbcDialect()) == false) { + return false; + } + + boolean visitorRes = JDBCRexCallValidator.isValidJdbcOperation(filter.getCondition(),conv1.getJdbcDialect()); + if (visitorRes) { + return JDBCRexCallValidator.isValidJdbcOperation(join.getCondition(), conv1.getJdbcDialect()); + } + return false; + } + + @Override + public void onMatch(RelOptRuleCall call) { + Filter filter = call.rel(0); + Join join = call.rel(1); + super.perform(call, filter, join); + } +} diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCFilterPushDownRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCFilterPushDownRule.java new file mode 100644 index 0000000..828e31b --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCFilterPushDownRule.java @@ -0,0 +1,60 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.Arrays; + +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcFilter; +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcFilterRule; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Filter; +import org.apache.calcite.rex.RexNode; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JDBCExtractJoinFilterRule extracts out the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter} + * from a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin} operator. + * if the HiveFilter could be replaced by two HiveFilter operators that one of them could be pushed down below the + * {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter} + */ + +public class JDBCFilterPushDownRule extends RelOptRule { + private static final Logger LOG = LoggerFactory.getLogger(JDBCFilterPushDownRule.class); + + public static final JDBCFilterPushDownRule INSTANCE = new JDBCFilterPushDownRule (); + + public JDBCFilterPushDownRule() { + super(operand(HiveFilter.class, + operand(HiveJdbcConverter.class, any()))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + final HiveFilter filter = call.rel(0); + final HiveJdbcConverter converter = call.rel(1); + + RexNode cond = filter.getCondition (); + + return JDBCRexCallValidator.isValidJdbcOperation(cond, converter.getJdbcDialect()); + } + + @Override + public void onMatch(RelOptRuleCall call) { + LOG.debug("JDBCFilterPushDown has been called"); + + final HiveFilter filter = call.rel(0); + final HiveJdbcConverter converter = call.rel(1); + + Filter newHiveFilter = filter.copy(filter.getTraitSet(), converter.getInput(),filter.getCondition()); + JdbcFilter newJdbcFilter = (JdbcFilter) new JdbcFilterRule(converter.getJdbcConvention()).convert(newHiveFilter); + if (newJdbcFilter != null) { + RelNode ConverterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcFilter)); + + call.transformTo(ConverterRes); + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCJoinPushDownRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCJoinPushDownRule.java new file mode 100644 index 0000000..44e1413 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCJoinPushDownRule.java @@ -0,0 +1,79 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.Arrays; + +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcJoin; +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcJoinRule; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rex.RexNode; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JDBCJoinPushDownRule convert a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin} + * into a {@link org.apache.calcite.adapter.jdbc.JdbcRules.JdbcJoin} + * and pushes it down below the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter}} + * operator so it will be sent to the external table. + */ + +public class JDBCJoinPushDownRule extends RelOptRule { + private static final Logger LOG = LoggerFactory.getLogger(JDBCJoinPushDownRule.class); + + final static public JDBCJoinPushDownRule INSTANCE = new JDBCJoinPushDownRule (); + + public JDBCJoinPushDownRule() { + super(operand(HiveJoin.class, + operand(HiveJdbcConverter.class, any()), + operand(HiveJdbcConverter.class, any()))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + final HiveJoin join = call.rel(0); + final RexNode cond = join.getCondition(); + final HiveJdbcConverter converter1 = call.rel(1); + final HiveJdbcConverter converter2 = call.rel(2); + + //TODO:The actual check should be the compare of the connection string of the external tables + /*if (converter1.getJdbcConvention().equals(converter2.getJdbcConvention()) == false) { + return false; + }*/ + + if (converter1.getJdbcConvention().getName().equals(converter2.getJdbcConvention().getName()) == false) { + return false; + } + + if (cond.isAlwaysTrue()) { + return false;//We don't want to push cross join + } + + boolean visitorRes = JDBCRexCallValidator.isValidJdbcOperation(cond, converter1.getJdbcDialect()); + return visitorRes; + } + + @Override + public void onMatch(RelOptRuleCall call) { + LOG.debug("JDBCJoinPushDownRule has been called"); + + final HiveJoin join = call.rel(0); + final HiveJdbcConverter converter1 = call.rel(1); + final HiveJdbcConverter converter2 = call.rel(2); + + RelNode input1 = converter1.getInput(); + RelNode input2 = converter2.getInput(); + + HiveJoin newHiveJoin = join.copy(join.getTraitSet(), join.getCondition(), input1, input2, join.getJoinType(),join.isSemiJoinDone()); + JdbcJoin newJdbcJoin = (JdbcJoin) new JdbcJoinRule(converter1.getJdbcConvention()).convert(newHiveJoin, false); + if (newJdbcJoin != null) { + RelNode ConverterRes = converter1.copy(converter1.getTraitSet(), Arrays.asList(newJdbcJoin)); + if (ConverterRes != null) { + call.transformTo(ConverterRes); + } + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCProjectPushDownRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCProjectPushDownRule.java new file mode 100644 index 0000000..8cf8577 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCProjectPushDownRule.java @@ -0,0 +1,62 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.Arrays; + +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcProject; +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcProjectRule; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Project; +import org.apache.calcite.rex.RexNode; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JDBCProjectPushDownRule convert a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject} + * into a {@link org.apache.calcite.adapter.jdbc.JdbcRules.JdbcAggregateRule.JdbcProject} + * and pushes it down below the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter}} + * operator so it will be sent to the external table. + */ + +public class JDBCProjectPushDownRule extends RelOptRule { + private static final Logger LOG = LoggerFactory.getLogger(JDBCProjectPushDownRule.class); + + public static final JDBCProjectPushDownRule INSTANCE = new JDBCProjectPushDownRule (); + + public JDBCProjectPushDownRule() { + super(operand(HiveProject.class, + operand(HiveJdbcConverter.class, any()))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + final HiveProject project = call.rel(0); + final HiveJdbcConverter conv = call.rel(1); + for (RexNode curr_project : project.getProjects()) { + if (JDBCRexCallValidator.isValidJdbcOperation(curr_project, conv.getJdbcDialect()) == false) { + return false; + } + } + + return true; + } + + @Override + public void onMatch(RelOptRuleCall call) { + LOG.debug("JDBCProjectPushDownRule has been called"); + + final HiveProject project = call.rel(0); + final HiveJdbcConverter converter = call.rel(1); + + Project newHiveProject = project.copy(project.getTraitSet(), converter.getInput(),project.getProjects(), project.getRowType()); + JdbcProject newJdbcProject = (JdbcProject) new JdbcProjectRule(converter.getJdbcConvention()).convert(newHiveProject); + if (newJdbcProject != null) { + RelNode ConverterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcProject)); + call.transformTo(ConverterRes); + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCRexCallValidator.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCRexCallValidator.java new file mode 100644 index 0000000..d5b7edd --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCRexCallValidator.java @@ -0,0 +1,70 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rex.RexCall; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexOver; +import org.apache.calcite.rex.RexVisitorImpl; +import org.apache.calcite.sql.SqlDialect; +import org.apache.calcite.sql.SqlOperator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A utility class that helps identify Hive-Jdbc functions gaps. + */ + +class JDBCRexCallValidator { + + private static final Logger LOG = LoggerFactory.getLogger(JDBCRexCallValidator.class); + + static private class JdbcRexCallValidatorVisitor extends RexVisitorImpl { + final private SqlDialect dialect; + + public JdbcRexCallValidatorVisitor(SqlDialect dialect) { + super (true); + this.dialect = dialect; + } + + boolean res = true; + + private boolean validRexCall (RexCall call) { + if (call instanceof RexOver) { + LOG.debug("RexOver operator push down is not supported for now with the following operator:" + call); + return false; + } + final SqlOperator operator = call.getOperator(); + List operands = call.getOperands(); + RelDataType resType = call.getType(); + ArrayList paramsListType = new ArrayList(); + for (RexNode currNode : operands) { + paramsListType.add(currNode.getType()); + } + return dialect.supportsFunction(operator, resType, paramsListType); + } + + @Override + public Void visitCall(RexCall call) { + if (res == true) { + res = validRexCall (call); + if (res == true) { + return super.visitCall(call); + } + } + return null; + } + + private boolean go (RexNode cond) { + cond.accept(this); + return res; + } + } + + public static boolean isValidJdbcOperation(RexNode cond, SqlDialect dialect) { + return new JdbcRexCallValidatorVisitor (dialect).go (cond); + } + +}; diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCSortPushDownRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCSortPushDownRule.java new file mode 100644 index 0000000..a427757 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCSortPushDownRule.java @@ -0,0 +1,65 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.Arrays; + +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcSortRule; +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcSort; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.rex.RexNode; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JDBCSortPushDownRule convert a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit} + * into a {@link org.apache.calcite.adapter.jdbc.JdbcRules.JdbcSort} + * and pushes it down below the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter}} + * operator so it will be sent to the external table. + */ + +public class JDBCSortPushDownRule extends RelOptRule { + private static final Logger LOG = LoggerFactory.getLogger(JDBCSortPushDownRule.class); + + public static final JDBCSortPushDownRule INSTANCE = new JDBCSortPushDownRule (); + + public JDBCSortPushDownRule() { + super(operand(HiveSortLimit.class, + operand(HiveJdbcConverter.class, operand(RelNode.class, any())))); + } + + public boolean matches(RelOptRuleCall call) { + final Sort sort = (Sort) call.rel(0); + final HiveJdbcConverter conv = call.rel(1); + + for (RexNode curr_call : sort.getChildExps()) { + if (JDBCRexCallValidator.isValidJdbcOperation(curr_call, conv.getJdbcDialect()) == false) { + return false; + } + } + + return true; + } + + @Override + public void onMatch(RelOptRuleCall call) { + LOG.debug("JDBCSortPushDownRule has been called"); + + final HiveSortLimit sort = call.rel(0); + final HiveJdbcConverter converter = call.rel(1); + final RelNode input = call.rel(2); + + + Sort newHiveSort = sort.copy(sort.getTraitSet(), input, sort.getCollation(), sort.getOffsetExpr (), sort.getFetchExpr()); + JdbcSort newJdbcSort = (JdbcSort) new JdbcSortRule(converter.getJdbcConvention()).convert (newHiveSort, false); + if (newJdbcSort != null) { + RelNode ConverterRes = converter.copy(converter.getTraitSet(), Arrays.asList(newJdbcSort)); + + call.transformTo(ConverterRes); + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCUnionPushDownRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCUnionPushDownRule.java new file mode 100644 index 0000000..a8c8080 --- /dev/null +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/JDBCUnionPushDownRule.java @@ -0,0 +1,71 @@ +package org.apache.hadoop.hive.ql.optimizer.calcite.rules; + +import java.util.Arrays; +import java.util.List; + +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcUnion; +import org.apache.calcite.adapter.jdbc.JdbcRules.JdbcUnionRule; +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelOptRuleCall; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Union; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * JDBCUnionPushDownRule convert a {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion} + * into a {@link org.apache.calcite.adapter.jdbc.JdbcRules.JdbcUnion} + * and pushes it down below the {@link org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter}} + * operator so it will be sent to the external table. + */ + +public class JDBCUnionPushDownRule extends RelOptRule { + private static final Logger LOG = LoggerFactory.getLogger(JDBCUnionPushDownRule.class); + + final static public JDBCUnionPushDownRule INSTANCE = new JDBCUnionPushDownRule (); + + public JDBCUnionPushDownRule() { + super(operand(HiveUnion.class, + operand(HiveJdbcConverter.class, any()), + operand(HiveJdbcConverter.class, any()))); + } + + @Override + public boolean matches(RelOptRuleCall call) { + final HiveUnion union = call.rel(0); + final HiveJdbcConverter converter1 = call.rel(1); + final HiveJdbcConverter converter2 = call.rel(2); + + //TODO:The actual check should be the compare of the connection string of the external tables + /*if (converter1.getJdbcConvention().equals(converter2.getJdbcConvention()) == false) { + return false; + }*/ + + if (converter1.getJdbcConvention().getName().equals(converter2.getJdbcConvention().getName()) == false) { + return false; + } + + return union.getInputs().size() == 2; + } + + @Override + public void onMatch(RelOptRuleCall call) { + LOG.debug("JDBCUnionPushDown has been called"); + + final HiveUnion union = call.rel(0); + final HiveJdbcConverter converter1 = call.rel(1); + final HiveJdbcConverter converter2 = call.rel(2); + + final List unionInput = Arrays.asList(converter1.getInput(), converter2.getInput()); + Union newHiveUnion = (Union) union.copy(union.getTraitSet(), unionInput, union.all); + JdbcUnion newJdbcUnion = (JdbcUnion) new JdbcUnionRule(converter1.getJdbcConvention()).convert(newHiveUnion); + if (newJdbcUnion != null) { + RelNode ConverterRes = converter1.copy(converter1.getTraitSet(), Arrays.asList(newJdbcUnion)); + + call.transformTo(ConverterRes); + } + } + +}; \ No newline at end of file diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTBuilder.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTBuilder.java index 79fcfcf..abd221d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTBuilder.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTBuilder.java @@ -33,13 +33,20 @@ import org.apache.hadoop.hive.conf.Constants; import org.apache.hadoop.hive.ql.optimizer.calcite.RelOptHiveTable; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.JdbcHiveTableScan; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; import org.apache.hadoop.hive.ql.parse.ASTNode; import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer; import org.apache.hadoop.hive.ql.parse.HiveParser; import org.apache.hadoop.hive.ql.parse.ParseDriver; import org.apache.hadoop.hive.ql.parse.SemanticAnalyzer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ASTBuilder { + + public static final Logger logger = LoggerFactory.getLogger(ASTBuilder.class); public static ASTBuilder construct(int tokenType, String text) { ASTBuilder b = new ASTBuilder(); @@ -59,14 +66,21 @@ public static ASTNode destNode() { "TOK_TMP_FILE")).node(); } - public static ASTNode table(RelNode scan) { - HiveTableScan hts; - if (scan instanceof DruidQuery) { - hts = (HiveTableScan) ((DruidQuery)scan).getTableScan(); + public static ASTNode table(final RelNode scan) { + HiveTableScan hts = null; + if (scan instanceof HiveJdbcConverter) { + HiveJdbcConverter jdbcConverter = (HiveJdbcConverter) scan; + JdbcHiveTableScan jdbcHiveTableScan = jdbcConverter.getTableScan(); + + hts = jdbcHiveTableScan.getHiveTableScan(); + } else if (scan instanceof DruidQuery) { + hts = (HiveTableScan) ((DruidQuery) scan).getTableScan(); } else { hts = (HiveTableScan) scan; } + + assert hts != null; RelOptHiveTable hTbl = (RelOptHiveTable) hts.getTable(); ASTBuilder b = ASTBuilder.construct(HiveParser.TOK_TABREF, "TOK_TABREF").add( ASTBuilder.construct(HiveParser.TOK_TABNAME, "TOK_TABNAME") @@ -100,13 +114,26 @@ public static ASTNode table(RelNode scan) { propList.add(ASTBuilder.construct(HiveParser.TOK_TABLEPROPERTY, "TOK_TABLEPROPERTY") .add(HiveParser.StringLiteral, "\"" + Constants.DRUID_QUERY_TYPE + "\"") .add(HiveParser.StringLiteral, "\"" + dq.getQueryType().getQueryName() + "\"")); + } else if (scan instanceof HiveJdbcConverter) { + HiveJdbcConverter jdbcConverter = (HiveJdbcConverter) scan; + final String query = jdbcConverter.generateSql (); + logger.info("JETHRO: The HiveJdbcConverter generated sql message is: " + System.lineSeparator() + query); + propList.add(ASTBuilder.construct(HiveParser.TOK_TABLEPROPERTY, "TOK_TABLEPROPERTY") + .add(HiveParser.StringLiteral, "\"" + Constants.JDBC_QUERY + "\"") + .add(HiveParser.StringLiteral, "\"" + SemanticAnalyzer.escapeSQLString(query) + "\"")); + + propList.add(ASTBuilder.construct(HiveParser.TOK_TABLEPROPERTY, "TOK_TABLEPROPERTY") + .add(HiveParser.StringLiteral, "\"" + Constants.HIVE_JDBC_QUERY + "\"") + .add(HiveParser.StringLiteral, "\"" + SemanticAnalyzer.escapeSQLString(query) + "\"")); } + if (hts.isInsideView()) { // We need to carry the insideView information from calcite into the ast. propList.add(ASTBuilder.construct(HiveParser.TOK_TABLEPROPERTY, "TOK_TABLEPROPERTY") .add(HiveParser.StringLiteral, "\"insideView\"") .add(HiveParser.StringLiteral, "\"TRUE\"")); } + b.add(ASTBuilder.construct(HiveParser.TOK_TABLEPROPERTIES, "TOK_TABLEPROPERTIES").add(propList)); // NOTE: Calcite considers tbls to be equal if their names are the same. Hence diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java index 47c00aa..e8ff1eb 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java @@ -27,6 +27,8 @@ import org.apache.calcite.adapter.druid.DruidQuery; +import org.apache.calcite.adapter.jdbc.JdbcTable; +import org.apache.calcite.adapter.jdbc.JdbcTableScan; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.RelVisitor; @@ -64,9 +66,11 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSemanticException; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveAggregate; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveGroupingID; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableFunctionScan; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.JdbcHiveTableScan; import org.apache.hadoop.hive.ql.optimizer.calcite.translator.SqlFunctionConverter.HiveToken; import org.apache.hadoop.hive.ql.parse.ASTNode; import org.apache.hadoop.hive.ql.parse.HiveParser; @@ -344,6 +348,10 @@ private QueryBlockInfo convertSource(RelNode r) throws CalciteSemanticException TableScan f = (TableScan) r; s = new Schema(f); ast = ASTBuilder.table(f); + } else if (r instanceof HiveJdbcConverter) { + HiveJdbcConverter f = (HiveJdbcConverter) r; + s = new Schema(f); + ast = ASTBuilder.table(f); } else if (r instanceof DruidQuery) { DruidQuery f = (DruidQuery) r; s = new Schema(f); @@ -425,7 +433,8 @@ public void handle(TableFunctionScan tableFunctionScan) { public void visit(RelNode node, int ordinal, RelNode parent) { if (node instanceof TableScan || - node instanceof DruidQuery) { + node instanceof DruidQuery || + node instanceof HiveJdbcConverter) { ASTConverter.this.from = node; } else if (node instanceof Filter) { handle((Filter) node); @@ -765,6 +774,15 @@ public QueryBlockInfo(Schema schema, ASTNode ast) { } } + Schema(HiveJdbcConverter scan) { + HiveJdbcConverter jdbcHiveCoverter = (HiveJdbcConverter) (scan); + final JdbcHiveTableScan jdbcTableScan = jdbcHiveCoverter.getTableScan(); + String tabName = jdbcTableScan.getHiveTableScan().getTableAlias();//TODOY ask Jesus, verify with test + for (RelDataTypeField field : jdbcHiveCoverter.getRowType().getFieldList()) { + add(new ColumnInfo(tabName, field.getName())); + } + } + Schema(Project select, String alias) { for (RelDataTypeField field : select.getRowType().getFieldList()) { add(new ColumnInfo(alias, field.getName())); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index 062df06..b7170cc 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -43,6 +43,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import javax.sql.DataSource; import com.google.common.collect.Iterables; import org.antlr.runtime.ClassicToken; import org.antlr.runtime.CommonToken; @@ -52,6 +53,9 @@ import org.apache.calcite.adapter.druid.DruidQuery; import org.apache.calcite.adapter.druid.DruidSchema; import org.apache.calcite.adapter.druid.DruidTable; +import org.apache.calcite.adapter.jdbc.JdbcConvention; +import org.apache.calcite.adapter.jdbc.JdbcSchema; +import org.apache.calcite.adapter.jdbc.JdbcTable; import org.apache.calcite.config.CalciteConnectionConfig; import org.apache.calcite.config.CalciteConnectionConfigImpl; import org.apache.calcite.config.CalciteConnectionProperty; @@ -106,6 +110,8 @@ import org.apache.calcite.schema.SchemaPlus; import org.apache.calcite.sql.SqlAggFunction; import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlDialect; +import org.apache.calcite.sql.SqlDialectFactoryImpl; import org.apache.calcite.sql.SqlExplainLevel; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.SqlLiteral; @@ -171,6 +177,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveFilter; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveGroupingID; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveIntersect; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJdbcConverter; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveRelNode; @@ -179,6 +186,7 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableFunctionScan; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion; +import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.JdbcHiveTableScan; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveAggregateJoinTransposeRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveAggregateProjectMergeRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveAggregatePullUpConstantsRule; @@ -226,10 +234,22 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveUnionMergeRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveUnionPullUpConstantsRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.HiveWindowingFixRule; + +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCAggregationPushDownRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCFilterJoinRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCFilterPushDownRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCExtractJoinFilterRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCJoinPushDownRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCProjectPushDownRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCSortPushDownRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCUnionPushDownRule; +import org.apache.hadoop.hive.ql.optimizer.calcite.rules.JDBCAbstractSplitFilterRule; + import org.apache.hadoop.hive.ql.optimizer.calcite.rules.views.HiveAggregateIncrementalRewritingRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.views.HiveMaterializedViewRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.views.HiveNoAggregateIncrementalRewritingRule; import org.apache.hadoop.hive.ql.optimizer.calcite.rules.views.MaterializedViewRewritingRelVisitor; + import org.apache.hadoop.hive.ql.optimizer.calcite.translator.ASTBuilder; import org.apache.hadoop.hive.ql.optimizer.calcite.translator.ASTConverter; import org.apache.hadoop.hive.ql.optimizer.calcite.translator.HiveOpConverter; @@ -1830,6 +1850,26 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu ); perfLogger.PerfLogEnd(this.getClass().getName(), PerfLogger.OPTIMIZER, "Calcite: Druid transformation rules"); + // 11. Apply Jdbc transformation rules + if (LOG.isDebugEnabled()) { + LOG.debug("Original plan for jdbc rules:" + System.lineSeparator() + RelOptUtil.toString(calciteOptimizedPlan)); + } + + calciteOptimizedPlan = hepPlan(calciteOptimizedPlan, true, mdProvider.getMetadataProvider(), null, + HepMatchOrder.TOP_DOWN, + JDBCExtractJoinFilterRule.INSTANCE, + JDBCAbstractSplitFilterRule.SPLIT_FILTER_ABOVE_JOIN, JDBCAbstractSplitFilterRule.SPLIT_FILTER_ABOVE_CONVERTER, + JDBCFilterJoinRule.INSTANCE, + + JDBCJoinPushDownRule.INSTANCE, JDBCUnionPushDownRule.INSTANCE, + JDBCFilterPushDownRule.INSTANCE, JDBCProjectPushDownRule.INSTANCE, + JDBCAggregationPushDownRule.INSTANCE, JDBCSortPushDownRule.INSTANCE + ); + + if (LOG.isDebugEnabled()) { + LOG.debug("Updated plan after jdbc rules:" + System.lineSeparator() + RelOptUtil.toString(calciteOptimizedPlan)); + } + // 12. Run rules to aid in translation from Calcite tree to Hive tree if (HiveConf.getBoolVar(conf, ConfVars.HIVE_CBO_RETPATH_HIVEOP)) { perfLogger.PerfLogBegin(this.getClass().getName(), PerfLogger.OPTIMIZER); @@ -2722,7 +2762,7 @@ private RelNode genTableLogicalPlan(String tableAlias, QB qb) throws SemanticExc } // 4. Build operator - if (tableType == TableType.DRUID) { + if (tableType == TableType.DRUID || (tableType == TableType.JDBC && tabMetaData.getProperty("hive.sql.table") != null)) { // Create case sensitive columns list List originalColumnNames = ((StandardStructObjectInspector)rowObjectInspector).getOriginalColumnNames(); @@ -2742,51 +2782,79 @@ private RelNode genTableLogicalPlan(String tableAlias, QB qb) throws SemanticExc fullyQualifiedTabName = tabMetaData.getTableName(); } - // Build Druid query - String address = HiveConf.getVar(conf, - HiveConf.ConfVars.HIVE_DRUID_BROKER_DEFAULT_ADDRESS); - String dataSource = tabMetaData.getParameters().get(Constants.DRUID_DATA_SOURCE); - Set metrics = new HashSet<>(); + RelOptHiveTable optTable = new RelOptHiveTable(relOptSchema, fullyQualifiedTabName, + rowType, tabMetaData, nonPartitionColumns, partitionColumns, virtualCols, conf, + partitionCache, colStatsCache, noColsMissingStats); + + final HiveTableScan hts = new HiveTableScan(cluster, + cluster.traitSetOf(HiveRelNode.CONVENTION), optTable, + null == tableAlias ? tabMetaData.getTableName() : tableAlias, + getAliasId(tableAlias, qb), + HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP),//TODOY + qb.isInsideView() || qb.getAliasInsideView().contains(tableAlias.toLowerCase())); + + if (tableType == TableType.DRUID) { + // Build Druid query + String address = + HiveConf.getVar(conf, HiveConf.ConfVars.HIVE_DRUID_BROKER_DEFAULT_ADDRESS); + String dataSource = tabMetaData.getParameters().get(Constants.DRUID_DATA_SOURCE); + Set metrics = new HashSet<>(); RexBuilder rexBuilder = cluster.getRexBuilder(); RelDataTypeFactory dtFactory = rexBuilder.getTypeFactory(); - List druidColTypes = new ArrayList<>(); - List druidColNames = new ArrayList<>(); + List druidColTypes = new ArrayList<>(); + List druidColNames = new ArrayList<>(); //@TODO FIX this, we actually do not need this anymore, // in addition to that Druid allow numeric dimensions now so this check is not accurate - for (RelDataTypeField field : rowType.getFieldList()) { + for (RelDataTypeField field : rowType.getFieldList()) { if (DruidTable.DEFAULT_TIMESTAMP_COLUMN.equals(field.getName())) { // Druid's time column is always not null. druidColTypes.add(dtFactory.createTypeWithNullability(field.getType(), false)); } else { druidColTypes.add(field.getType()); } - druidColNames.add(field.getName()); - if (field.getName().equals(DruidTable.DEFAULT_TIMESTAMP_COLUMN)) { - // timestamp - continue; - } - if (field.getType().getSqlTypeName() == SqlTypeName.VARCHAR) { - // dimension - continue; + druidColNames.add(field.getName()); + if (field.getName().equals(DruidTable.DEFAULT_TIMESTAMP_COLUMN)) { + // timestamp + continue; + } + if (field.getType().getSqlTypeName() == SqlTypeName.VARCHAR) { + // dimension + continue; + } + metrics.add(field.getName()); } - metrics.add(field.getName()); - } - + // TODO: Default interval will be an Interval once Calcite 1.15.0 is released. + // We will need to update the type of this list. List intervals = Arrays.asList(DruidTable.DEFAULT_INTERVAL); rowType = dtFactory.createStructType(druidColTypes, druidColNames); DruidTable druidTable = new DruidTable(new DruidSchema(address, address, false), dataSource, RelDataTypeImpl.proto(rowType), metrics, DruidTable.DEFAULT_TIMESTAMP_COLUMN, intervals, null, null); - RelOptHiveTable optTable = new RelOptHiveTable(relOptSchema, fullyQualifiedTabName, - rowType, tabMetaData, nonPartitionColumns, partitionColumns, virtualCols, conf, - partitionCache, colStatsCache, noColsMissingStats); - final TableScan scan = new HiveTableScan(cluster, cluster.traitSetOf(HiveRelNode.CONVENTION), - optTable, null == tableAlias ? tabMetaData.getTableName() : tableAlias, - getAliasId(tableAlias, qb), HiveConf.getBoolVar(conf, - HiveConf.ConfVars.HIVE_CBO_RETPATH_HIVEOP), qb.isInsideView() - || qb.getAliasInsideView().contains(tableAlias.toLowerCase())); - tableRel = DruidQuery.create(cluster, cluster.traitSetOf(BindableConvention.INSTANCE), - optTable, druidTable, ImmutableList.of(scan), DruidSqlOperatorConverter.getDefaultMap()); + + tableRel = DruidQuery.create(cluster, cluster.traitSetOf(BindableConvention.INSTANCE), + optTable, druidTable, ImmutableList.of(hts)); + } else if (tableType == TableType.JDBC) { + LOG.debug("JDBC is running"); + final String dataBaseType = tabMetaData.getProperty("hive.sql.database.type"); + final String url = tabMetaData.getProperty("hive.sql.jdbc.url"); + final String driver = tabMetaData.getProperty("hive.sql.jdbc.driver"); + final String user = tabMetaData.getProperty("hive.sql.dbcp.username"); + final String pswd = tabMetaData.getProperty("hive.sql.dbcp.password"); + //final String query = tabMetaData.getProperty("hive.sql.query"); + final String tableName = tabMetaData.getProperty("hive.sql.table"); + + final DataSource ds = JdbcSchema.dataSource(url, driver, user, pswd); + SqlDialect jdbcDialect = JdbcSchema.createDialect(SqlDialectFactoryImpl.INSTANCE, ds); + JdbcConvention jc = JdbcConvention.of(jdbcDialect, null, dataBaseType); + JdbcSchema schema = new JdbcSchema(ds, jc.dialect, jc, null/*catalog */, null/*schema */); + JdbcTable jt = (JdbcTable) schema.getTable(tableName); + if (jt == null) { + throw new SemanticException ("Table " + tableName + " was not found in the database"); + } + + JdbcHiveTableScan jdbcTableRel = new JdbcHiveTableScan (cluster, optTable, jt, jc, hts); + tableRel = new HiveJdbcConverter(cluster, jdbcTableRel.getTraitSet().replace (HiveRelNode.CONVENTION), jdbcTableRel, jc); + } } else { // Build row type from field RelDataType rowType = inferNotNullableColumns(tabMetaData, TypeConverter.getType(cluster, rr, null)); @@ -2886,11 +2954,20 @@ private RelDataType inferNotNullableColumns(Table tabMetaData, RelDataType rowTy } private TableType obtainTableType(Table tabMetaData) { - if (tabMetaData.getStorageHandler() != null && - tabMetaData.getStorageHandler().toString().equals( - Constants.DRUID_HIVE_STORAGE_HANDLER_ID)) { - return TableType.DRUID; + if (tabMetaData.getStorageHandler() != null) { + final String storageHandlerStr = tabMetaData.getStorageHandler().toString(); + if (storageHandlerStr + .equals(Constants.DRUID_HIVE_STORAGE_HANDLER_ID)) { + return TableType.DRUID; + } + + if (storageHandlerStr + .equals(Constants.JDBC_HIVE_STORAGE_HANDLER_ID)) { + return TableType.JDBC; + } + } + return TableType.NATIVE; } @@ -4975,6 +5052,7 @@ private QBParseInfo getQBParseInfo(QB qb) throws CalciteSemanticException { private enum TableType { DRUID, - NATIVE + NATIVE, + JDBC } } diff --git ql/src/test/queries/clientpositive/jdbc_handler.q ql/src/test/queries/clientpositive/jdbc_handler.q index 61e02a8..a205e49 100644 --- ql/src/test/queries/clientpositive/jdbc_handler.q +++ ql/src/test/queries/clientpositive/jdbc_handler.q @@ -1,6 +1,45 @@ --! qt:dataset:src set hive.strict.checks.cartesian.product= false; + + +CREATE TEMPORARY FUNCTION dboutput AS 'org.apache.hadoop.hive.contrib.genericudf.example.GenericUDFDBOutput'; + + +FROM src + +SELECT dboutput ( 'jdbc:derby:;databaseName=${system:test.tmp.dir}/test_dboutput_db;create=true','','', +'CREATE TABLE SIMPLE_DERBY_TABLE ("kkey" INTEGER NOT NULL )' ), + +dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_dboutput_db;create=true','','', +'INSERT INTO SIMPLE_DERBY_TABLE ("kkey") VALUES (?)','20'), + +dboutput('jdbc:derby:;databaseName=${system:test.tmp.dir}/test_dboutput_db;create=true','','', +'INSERT INTO SIMPLE_DERBY_TABLE ("kkey") VALUES (?)','200') + +limit 1; + +CREATE EXTERNAL TABLE ext_simple_derby_table +( + kkey bigint +) +STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( + "hive.sql.database.type" = "DERBY", + "hive.sql.jdbc.driver" = "org.apache.derby.jdbc.EmbeddedDriver", + "hive.sql.jdbc.url" = "jdbc:derby:;databaseName=${system:test.tmp.dir}/test_dboutput_db;create=true;collation=TERRITORY_BASED:PRIMARY", + "hive.sql.dbcp.username" = "APP", + "hive.sql.dbcp.password" = "mine", + "hive.sql.table" = "SIMPLE_DERBY_TABLE", + "hive.sql.dbcp.maxActive" = "1" +); + +select * from ext_simple_derby_table; + +explain select * from ext_simple_derby_table where 100 < ext_simple_derby_table.kkey; + +select * from ext_simple_derby_table where 100 < ext_simple_derby_table.kkey; + CREATE EXTERNAL TABLE tables ( id bigint, @@ -27,6 +66,7 @@ TBLPROPERTIES ( "hive.sql.query" = "SELECT DB_ID, NAME FROM DBS" ); + select tables.name as tn, dbs.NAME as dn, tables.type as t from tables join dbs on (tables.db_id = dbs.DB_ID) WHERE tables.name IN ("src", "dbs", "tables") order by tn, dn, t; diff --git ql/src/test/queries/clientpositive/my_sanity_tpcds.q ql/src/test/queries/clientpositive/my_sanity_tpcds.q new file mode 100644 index 0000000..a8cdbcf --- /dev/null +++ ql/src/test/queries/clientpositive/my_sanity_tpcds.q @@ -0,0 +1,1241 @@ +add jar /home/msydoron/eclipse-workspace/JethroDataJDBCDriver/target/jethro-jdbc-3.6-standalone.jar; + +CREATE EXTERNAL TABLE jethro_store_sales ( ss_sold_date_sk INT, + ss_sold_time_sk INT, + ss_item_sk INT, + ss_customer_sk INT, + ss_cdemo_sk INT, + ss_hdemo_sk INT, + ss_addr_sk INT, + ss_store_sk INT, + ss_promo_sk INT, + ss_ticket_number INT, + ss_quantity INT, + ss_wholesale_cost FLOAT, + ss_list_price FLOAT, + ss_sales_price FLOAT, + ss_ext_discount_amt FLOAT, + ss_ext_sales_price FLOAT, + ss_ext_wholesale_cost FLOAT, + ss_ext_list_price DOUBLE, + ss_ext_tax DOUBLE, + ss_coupon_amt DOUBLE, + ss_net_paid DOUBLE, + ss_net_paid_inc_tax DOUBLE, + ss_net_profit DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "store_sales", + "hive.sql.dbcp.maxActive" = "1"); + + +CREATE EXTERNAL TABLE jethro_item ( i_item_sk INT, + i_item_id STRING, + i_rec_start_date TIMESTAMP, + i_rec_end_date TIMESTAMP, + i_item_desc STRING, + i_current_price DOUBLE, + i_wholesale_cost DOUBLE, + i_brand_id INT, + i_brand STRING, + i_class_id INT, + i_class STRING, + i_category_id INT, + i_category STRING, + i_manufact_id INT, + i_manufact STRING, + i_size STRING, + i_formulation STRING, + i_color STRING, + i_units STRING, + i_container STRING, + i_manager_id INT, + i_product_name STRING) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "item", + "hive.sql.dbcp.maxActive" = "1"); + + +SELECT ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -501 GROUP BY ss_sold_date_sk, i_product_name HAVING sum(ss_sales_price) < 3 ORDER BY ss_sold_date_sk DESC, i_product_name; + +select * from (select * from jethro_store_sales)T limit 3; +select * from (select * from jethro_item)T limit 3; +--select cast (i_current_price as INT) from jethro_item group by 1 order by 1 limit 5; +--select cast(cast (i_current_price as FLOAT)as INT) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_rec_start_date as INT) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_rec_start_date as FLOat) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_rec_start_date as FLOat) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_rec_start_date as double) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_item_sk as char) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_rec_start_date as int8) from jethro_item group by 1 order by 1 limit 5; +--select cast (i_rec_start_date as bigint) from jethro_item group by 1 order by 1 limit 5; + +SELECT avg(ss_net_profit), count(ss_net_profit), max(ss_net_profit), min(ss_net_profit), sum(ss_net_profit) from jethro_store_sales; +SELECT jethro_store_sales.ss_sold_date_sk, jethro_item.i_product_name FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk WHERE jethro_store_sales.ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -502 order by jethro_store_sales.ss_sold_date_sk asc, jethro_item.i_product_name desc; +SELECT ss_sold_date_sk, i_product_name, count(*) FROM jethro_store_sales JOIN jethro_item ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and ss_net_profit < -503 GROUP BY ss_sold_date_sk, i_product_name; +SELECT ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and ss_net_profit < -504 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name; +SELECT ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -505 GROUP BY ss_sold_date_sk, i_product_name HAVING sum(ss_sales_price) > 3 ORDER BY ss_sold_date_sk DESC, i_product_name; +SELECT ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -506 GROUP BY ss_sold_date_sk, i_product_name HAVING sum(ss_sales_price) < 3 ORDER BY ss_sold_date_sk DESC, i_product_name; +SELECT ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk WHERE jethro_store_sales.ss_net_profit > 500 AND ss_net_profit <501 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +SELECT ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk WHERE ss_store_sk = i_category_id AND ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -507 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +SELECT d_year, d_moy, i.i_product_name, count(*) FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk JOIN date_dim dt ON dt.d_date_sk = ss_sold_date_sk WHERE ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -508 GROUP BY d_year, d_moy, i_product_name ORDER BY d_year, d_moy, i_product_name LIMIT 10; +SELECT c_last_name ,c_first_name ,c_salutation ,c_preferred_cust_flag ,ss_ticket_number ,cnt FROM (SELECT ss_ticket_number ,ss_customer_sk ,count(*) cnt from jethro_store_sales JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN household_demographics ON jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk where (date_dim.d_dom between 1 and 3 or date_dim.d_dom between 25 and 28) and (household_demographics.hd_buy_potential = '>10000' or household_demographics.hd_buy_potential = 'Unknown') and household_demographics.hd_vehicle_count > 0 and household_demographics.hd_vehicle_count > 1 and date_dim.d_year = 1998 and store.s_county = 'Williamson County' group by ss_ticket_number,ss_customer_sk) dn JOIN customer ON dn.ss_customer_sk = customer.c_customer_sk WHERE cnt between 15 and 20 ORDER BY c_last_name,c_first_name,c_salutation, c_preferred_cust_flag desc; +SELECT sum(cs1.cs_ext_discount_amt) as excess_discount_amount FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date between '2000-01-27' and '2000-02-27') cs1 JOIN jethro_item i ON (i.i_item_sk = cs1.cs_item_sk) JOIN (SELECT cs2.cs_item_sk as cs_item_sk, 1.3 * avg(cs_ext_discount_amt) as avg_cs_ext_discount_amt FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date between '2000-01-27' and '2000-02-27') cs2 GROUP BY cs2.cs_item_sk) tmp1 ON (i.i_item_sk = tmp1.cs_item_sk) WHERE i.i_manufact_id = 436; +SELECT d_year ,jethro_item.i_brand_id brand_id ,jethro_item.i_brand brand ,sum(ss_ext_sales_price) sum_agg FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk WHERE jethro_item.i_manufact_id=436 and dt.d_moy=12 group by d_year ,jethro_item.i_brand ,jethro_item.i_brand_id ORDER BY d_year ,sum(ss_ext_sales_price) desc ,jethro_item.i_brand_id limit 10; +SELECT i_item_id, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 from jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk JOIN promotion ON jethro_store_sales.ss_promo_sk = promotion.p_promo_sk where cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and (p_channel_email = 'N' or p_channel_event = 'N') and d_year = 1998 group by i_item_id order by i_item_id limit 100; +SELECT i_item_id, avg(cs_quantity) agg1, avg(cs_list_price) agg2, avg(cs_coupon_amt) agg3, avg(cs_sales_price) agg4 from catalog_sales JOIN customer_demographics ON catalog_sales.cs_bill_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON catalog_sales.cs_item_sk = jethro_item.i_item_sk JOIN promotion ON catalog_sales.cs_promo_sk = promotion.p_promo_sk where cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and (p_channel_email = 'N' or p_channel_event = 'N') and d_year = 1998 group by i_item_id order by i_item_id limit 49; +SELECT i_item_id, s_state, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 from jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk where cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and d_year = 1998 and s_state = 'TN' group by i_item_id, s_state order by i_item_id ,s_state limit 100; +SELECT d_year ,jethro_item.i_category_id ,jethro_item.i_category ,sum(ss_ext_sales_price) as s from date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk where jethro_item.i_manager_id = 1 and dt.d_moy=12 and dt.d_year=1998 group by d_year ,jethro_item.i_category_id ,jethro_item.i_category order by sum(ss_ext_sales_price) desc,d_year ,i_category_id ,i_category limit 100; +SELECT i_item_id, s_state, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 FROM jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk=customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk=date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk=store.s_store_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk=jethro_item.i_item_sk WHERE cd_gender='F' AND cd_marital_status='W' AND cd_education_status='Primary' AND d_year=1998 AND s_state='TN' AND i_item_id between 'AAAAAAAAPPCCAAAA' AND 'AAAAAAAAPPHDAAAA' GROUP BY i_item_id, s_state ORDER BY i_item_id, s_state; +--SELECT s_state, count(*) from store s where s.s_county <> 'a' group by s_state; +--SELECT ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk WHERE jethro_store_sales.ss_net_profit < -508 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +SELECT cc_sq_ft, -cc_sq_ft, +cc_sq_ft, - -cc_sq_ft from call_center limit 1; +--SELECT count(*) from jethro_store_sales where ss_store_sk in (SELECT s_store_sk from store where s_country = 'United States'); +SELECT * FROM (SELECT i_manager_id, sum(ss_sales_price) sum_sales from jethro_store_sales join jethro_item on (jethro_store_sales.ss_item_sk=jethro_item.i_item_sk) join store on (jethro_store_sales.ss_store_sk=store.s_store_sk) join date_dim on (jethro_store_sales.ss_sold_date_sk=date_dim.d_date_sk) where ss_sold_date_sk between 2451911 and 2452275 and d_month_seq in (1212, 1212+1, 1212+2, 1212+3, 1212+4, 1212+5, 1212+6, 1212+7, 1212+8, 1212+9, 1212+10, 1212+11) and ((i_category in ('Books', 'Children', 'Electronics') and i_class in ('personal', 'portable', 'refernece', 'self-help') and i_brand in ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) or (i_category in('Women', 'Music', 'Men') and i_class in ('accessories', 'classical', 'fragrances', 'pants') and i_brand in ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'portoamalg #1'))) group by i_manager_id, d_moy) tmp1 order by i_manager_id, sum_sales limit 100; +SELECT c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number, extended_price, extended_tax, list_price from (SELECT ss_ticket_number, ss_customer_sk, ca_city bought_city, sum(ss_ext_sales_price) extended_price, sum(ss_ext_list_price) list_price, sum(ss_ext_tax) extended_tax from jethro_store_sales join store on (jethro_store_sales.ss_store_sk = store.s_store_sk) join household_demographics on (jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) join date_dim on (jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk) join customer_address on (jethro_store_sales.ss_addr_sk = customer_address.ca_address_sk) where store.s_city in('Midway', 'Fairview') and (household_demographics.hd_dep_count = 5 or household_demographics.hd_vehicle_count = 3) and d_date between '1999-01-01' and '1999-03-31' and ss_sold_date_sk between 2451180 and 2451269 group by ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city ) dn join customer on (dn.ss_customer_sk = customer.c_customer_sk) join customer_address current_addr on (customer.c_current_addr_sk = current_addr.ca_address_sk) where current_addr.ca_city <> bought_city and c_last_name between 'A' and 'Al' order by c_last_name, ss_ticket_number; +SELECT count(*) from jethro_item having count(*) > 0; +SELECT count(*) FROM jethro_store_sales WHERE ss_sold_date_sk in (SELECT d_date_sk FROM date_dim WHERE d_moy=12) and ss_item_sk in (SELECT i_item_sk FROM jethro_item WHERE i_manufact_id = 436); +SELECT if(ss_net_profit<10,0,1),count(ss_store_sk) from jethro_store_sales group by if(ss_net_profit<10,0,1); +SELECT count(*) FROM (select * from jethro_item) v WHERE i_item_sk = 666; +select * from store join date_dim on s_closed_date_sk = d_date_sk limit 1; +SELECT i_class, count(distinct i_manufact_id) class_manufact_count FROM jethro_item WHERE i_color = 'brown' GROUP BY i_class HAVING count(distinct i_manufact_id) >= 3 order by i_class; +SELECT jethro_store_sales.ss_sold_date_sk, jethro_item.i_product_name FROM jethro_store_sales LEFT OUTER JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk WHERE jethro_store_sales.ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -500 order by jethro_store_sales.ss_sold_date_sk asc, jethro_item.i_product_name desc; +SELECT ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_item i LEFT OUTER JOIN jethro_store_sales ON ss_item_sk = i_item_sk WHERE jethro_store_sales.ss_net_profit > 500 AND ss_net_profit <501 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +SELECT ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_store_sales RIGHT OUTER JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_store_sk = i_category_id AND ss_list_price between 9.91 and 9.94 and jethro_store_sales.ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +SELECT c_last_name ,c_first_name ,c_salutation ,c_preferred_cust_flag ,ss_ticket_number ,cnt FROM (SELECT ss_ticket_number ,ss_customer_sk ,count(*) cnt from jethro_store_sales LEFT OUTER JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk LEFT OUTER JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk LEFT OUTER JOIN household_demographics ON jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk where (date_dim.d_dom between 1 and 3 or date_dim.d_dom between 25 and 28) and (household_demographics.hd_buy_potential = '>10000' or household_demographics.hd_buy_potential = 'Unknown') and household_demographics.hd_vehicle_count > 0 and household_demographics.hd_vehicle_count > 1 and date_dim.d_year = 1998 and store.s_county = 'Williamson County' group by ss_ticket_number,ss_customer_sk ORDER by ss_ticket_number,ss_customer_sk limit 10) dn LEFT OUTER JOIN customer ON dn.ss_customer_sk = customer.c_customer_sk WHERE cnt between 15 and 20 ORDER BY c_last_name,c_first_name,c_salutation, c_preferred_cust_flag desc; +SELECT sum(cs1.cs_ext_discount_amt) as excess_discount_amount FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs LEFT JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date between '2000-01-27' and '2000-02-27') cs1 LEFT JOIN jethro_item i ON (i.i_item_sk = cs1.cs_item_sk) LEFT JOIN (SELECT cs2.cs_item_sk as cs_item_sk, 1.3 * avg(cs_ext_discount_amt) as avg_cs_ext_discount_amt FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs LEFT JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date between '2000-01-27' and '2000-02-27') cs2 GROUP BY cs2.cs_item_sk) tmp1 ON (i.i_item_sk = tmp1.cs_item_sk) WHERE i.i_manufact_id = 436; +SELECT * FROM (SELECT i_manager_id, sum(ss_sales_price) sum_sales from jethro_store_sales RIGHT JOIN jethro_item on (jethro_store_sales.ss_item_sk=jethro_item.i_item_sk) RIGHT JOIN store on (jethro_store_sales.ss_store_sk=store.s_store_sk) join date_dim on (jethro_store_sales.ss_sold_date_sk=date_dim.d_date_sk) where ss_sold_date_sk between 2451911 and 2452275 and d_month_seq in (1212, 1212+1, 1212+2, 1212+3, 1212+4, 1212+5, 1212+6, 1212+7, 1212+8, 1212+9, 1212+10, 1212+11) and ((i_category in ('Books', 'Children', 'Electronics') and i_class in ('personal', 'portable', 'refernece', 'self-help') and i_brand in ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) or (i_category in('Women', 'Music', 'Men') and i_class in ('accessories', 'classical', 'fragrances', 'pants') and i_brand in ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'portoamalg #1'))) group by i_manager_id, d_moy) tmp1 ORDER BY i_manager_id, sum_sales; +SELECT i_item_id, s_state, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 FROM jethro_store_sales LEFT JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk=customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk=date_dim.d_date_sk RIGHT JOIN store ON jethro_store_sales.ss_store_sk=store.s_store_sk LEFT JOIN jethro_item ON jethro_store_sales.ss_item_sk=jethro_item.i_item_sk WHERE cd_gender='F' AND cd_marital_status='W' AND cd_education_status='Primary' AND d_year<1998 AND s_state!='TN' AND i_item_id between 'AAAAAAAAPPCCAAAA' AND 'AAAAAAAAPPHDAAAA' GROUP BY i_item_id, s_state ORDER BY i_item_id, s_state; +select count(*) from jethro_store_sales join store on ss_store_sk = s_store_sk where s_state='TN'; +SELECT ss_store_sk, ss_item_sk, count(ss_item_sk) from jethro_store_sales WHERE ss_store_sk in (select distinct s_store_sk from store where s_zip LIKE '%70%') GROUP BY ss_store_sk, ss_item_sk ORDER BY count(ss_item_sk) desc, ss_store_sk asc, ss_item_sk desc limit 10; +select i_brand_id brand_id, i_brand brand, i_manufact_id, i_manufact, sum(ss_ext_sales_price) from jethro_store_sales t_ss LEFT join jethro_item i on ss_item_sk = i_item_sk LEFT join customer t_c on ss_customer_sk = c_customer_sk LEFT join store t_s on ss_store_sk = s_store_sk LEFT join date_dim t_d on ss_sold_date_sk = d_date_sk LEFT join customer_address t_ca on t_c.c_current_addr_sk = ca_address_sk where d_date_sk = ss_sold_date_sk and ss_item_sk = i_item_sk and i_manager_id = 7 and d_moy = 11 and d_year = 1999 and ss_customer_sk = c_customer_sk and c_current_addr_sk = ca_address_sk and substr(ca_zip, 1, 5) <> substr(s_zip, 1, 5) and ss_store_sk = s_store_sk and ss_sold_date_sk between 2451484 and 2451513 and i_brand LIKE '%amal%' and i_manufact LIKE '%ought%' and i_manufact LIKE 'anti%' and i_manufact_id != 125 group by i_brand, i_brand_id, i_manufact_id, i_manufact order by sum(ss_ext_sales_price) desc, i_brand, i_brand_id, i_manufact_id, i_manufact limit 100; +select distinct ss_item_sk, i_item_id from jethro_store_sales join jethro_item on ss_item_sk = i_item_sk where ss_item_sk in (select i_item_sk from jethro_item where i_item_sk <10) or i_item_id in ('AAAAAAAAKAAAAAAA') order by ss_item_sk limit 3; +select count(*) from jethro_store_sales where ss_net_profit<-500; +select i_product_name, c_preferred_cust_flag is_preferred, count(*) FROM jethro_store_sales ss JOIN date_dim d ON ss_sold_date_sk = d_date_sk JOIN jethro_item i ON ss_item_sk = i_item_sk JOIN customer c ON ss_customer_sk = c_customer_sk WHERE c_birth_country in ('ISRAEL','IRAN','FRANCE') AND d_date between '2000-05-28' and '2000-06-03' AND ss_quantity >=5 GROUP BY i_product_name, c_preferred_cust_flag ORDER BY i_product_name, c_preferred_cust_flag; +select count(*) from jethro_store_sales where not (ss_store_sk > 2 or ss_item_sk < 100); +select distinct i_item_id from jethro_store_sales join jethro_item on ss_item_sk = i_item_sk where ss_item_sk in (select i_item_sk from jethro_item where i_item_sk <10 ) or ss_item_sk = 10 order by i_item_id desc; +select count(*) from jethro_store_sales where ss_store_sk in (select s_store_sk from store where s_country = 'Israel'); +SELECT count(*) FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk WHERE jethro_store_sales.ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -500 and case when i_color ='pink' then i_item_sk else ss_sold_date_sk end = i_item_sk; +select concat(s_floor_space::string,' ',cast(s_gmt_offset as string)) from store; +select count(*) FROM /* filter in INNER JOIN (left table) */ jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk AND jethro_store_sales.ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -500 WHERE case when i_color ='pink' then i_item_sk else ss_sold_date_sk end = i_item_sk; +SELECT /* filter in INNER JOIN and OUTER JOIN */ s_store_id,case when i_category is NULL then 'OTHER' else i_category end ,count(*) FROM jethro_store_sales JOIN store on ss_store_sk = s_store_sk AND s_store_sk in (1,2) LEFT OUTER JOIN jethro_item on ss_item_sk = i_item_sk AND i_category like 'M%' GROUP BY s_store_id, case when i_category is NULL then 'OTHER' else i_category end; +select s_closed_date_sk, s_gmt_offset, case when s_closed_date_sk> 0 then s_gmt_offset end from store; +select i_rec_start_date, cast(1 as timestamp) from jethro_item where i_rec_start_date is not null limit 1; +select i_rec_start_date, cast(1.5 as timestamp) from jethro_item where i_rec_start_date is not null limit 1; +select count(*) from jethro_store_sales join store on ss_store_sk = s_store_sk and (s_store_sk=1 or s_store_sk=2); +select count(*) from jethro_store_sales join store on ss_store_sk = s_store_sk and s_store_sk in (1,2); +select s_store_id,case when i_category is NULL then 'OTHER' else i_category end ,count(*) from jethro_store_sales join store on ss_store_sk = s_store_sk and s_store_sk in (1,2) left outer join jethro_item on ss_item_sk = i_item_sk and i_category like 'M%' GROUP BY s_store_id, case when i_category is NULL then 'OTHER' else i_category end; +SELECT count(*) FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk AND case when i_color='pink' then ss_sold_date_sk end = i_item_sk + 2447260; +SELECT count(*) FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = jethro_item.i_item_sk AND case when 1=1 then ss_sold_date_sk end = i_item_sk + 2447260; +SELECT count(c) FROM (SELECT s_market_id-1 g, count(s_market_id) c FROM store GROUP BY s_market_id-1) v; +SELECT count(*) FROM jethro_store_sales JOIN jethro_item ON cast ( if (jethro_store_sales.ss_item_sk = NULL, 0, jethro_store_sales.ss_item_sk) as string) = jethro_item.i_item_sk; +select count(*) from jethro_store_sales where (not (ss_sold_date_sk = 2450816 and ss_sold_time_sk = 35731)) and (ss_sold_date_sk != 0 or ss_sold_time_sk != 0); +SELECT count(distinct i_manufact_id), IF (COUNT(DISTINCT i_manufact_id) = 0, 1, 2) from jethro_item where i_item_sk > 0; +SELECT count(*) FROM jethro_store_sales JOIN jethro_item ON cast ( if (jethro_store_sales.ss_item_sk = NULL, 0, jethro_store_sales.ss_item_sk) as string) = cast (jethro_item.i_item_sk as string); +select distinct cast(i_rec_start_date as string) from jethro_item where i_rec_start_date is not null; +select distinct cast(i_rec_start_date as string) from jethro_item where i_rec_start_date < '2000-01-01'; +select i_rec_start_date, cast(to_timestamp('2016-10-11 236:199') as string) from jethro_item where i_rec_start_date is not null limit 1; +select i_rec_start_date, cast(i_rec_start_date as integer) from jethro_item where i_rec_start_date is not null limit 1; +select cast(i_rec_start_date as double) from jethro_item where i_rec_start_date is not null limit 1; +select cast(i_rec_start_date as float) from jethro_item where i_rec_start_date is not null limit 1; +select unix_timestamp(i_rec_start_date), cast(i_rec_start_date as bigint) from jethro_item where i_rec_start_date is not null limit 1; +select s_country from store order by s_country limit 10 offset 60; +select sum(ss_sales_price) from jethro_store_sales where ss_sold_date_sk in (2450894, 2450911); +select sum(ss_sales_price) from jethro_store_sales where ss_sold_date_sk in (select ss_sold_date_sk from jethro_store_sales where ss_sold_date_sk > 2450911); +select sum(ss_sales_price) from jethro_store_sales where ss_sold_date_sk = 2450894 OR ss_sold_date_sk = 2450911; +select cc_city from call_center union all select w_city from warehouse; +select count(cc_city) from call_center union all select count(w_city) from warehouse; +select 1, cc_call_center_sk from call_center union all select cc_call_center_sk, cc_call_center_sk from call_center; +select cc_call_center_sk, 1 from call_center union all select cc_call_center_sk, cc_call_center_sk from call_center; +select cc_call_center_sk, 1 from call_center union all select cc_call_center_sk, cc_call_center_sk+1 from call_center; +select cc_call_center_sk-44, 1 from call_center union all select cc_call_center_sk+77, cc_call_center_sk+1 from call_center; +select cast (cc_call_center_sk as bigint) as b_cc_call_center_sk, 1 as ONE from call_center union all select cc_call_center_sk+77, cc_call_center_sk+1 from call_center; +select cc_call_center_sk, 1 from call_center union all select cast(cc_call_center_sk+77 as int), cc_call_center_sk+1 from call_center; +select count(*) from call_center union all select cc_call_center_sk from call_center; +select cc_call_center_sk from call_center union all select cast(count(cc_call_center_sk) as int) from call_center; +select cc_call_center_sk from call_center union all select max(cc_call_center_sk) from call_center; +select cc_call_center_sk, 1.0 from call_center union all select max(cc_call_center_sk) , '' from call_center; +select * from (select cc_call_center_sk from call_center union all select cc_call_center_sk from call_center) as foo; +select cc_call_center_sk from (select cc_call_center_sk from call_center union all select cc_call_center_sk from call_center) as foo; +select cc_call_center_sk, cc_division from (select cc_call_center_sk, cc_division from call_center union all select cc_company, cc_mkt_id from call_center) as foo; +select * from (select cc_call_center_sk, cc_division from call_center union all select cc_company, cc_mkt_id from call_center) as foo; +select cc_call_center_sk from (select cc_call_center_sk, cc_division, cc_company, cc_country from call_center union all select cc_company, cc_mkt_id, cc_employees, cc_zip from call_center) as foo; +select foo.cc_call_center_sk from (select cc_call_center_sk from call_center union all select cc_call_center_sk from call_center) as foo; +select foo.cc_employees from ((select cc_employees from call_center limit 0 )union all( select cc_call_center_sk from call_center limit 0)) as foo; +select foo.cc_employees from ((select cc_employees from call_center limit 0 )union all( select cc_call_center_sk from call_center)) as foo; +select foo.cc_employees from ((select cc_employees from call_center)union all( select cc_call_center_sk from call_center limit 0)) as foo; +select cc_employees from call_center where cc_employees in (select * from (select cc_employees from call_center union all select cc_call_center_sk from call_center) as qqq) union all (select cc_closed_date_sk from call_center); +select cc_call_center_sk, 1.0/my_division, your_country from (select cc_call_center_sk, (cc_division+1)*101 as my_division, cc_company, cc_country as your_country from call_center union all select cc_company, cc_mkt_id-777, cc_employees, cc_zip from call_center) as foo; +select cc_employees from call_center where cc_employees in (select * from (select cc_employees from call_center union all select cc_call_center_sk from call_center) as qqq) union all (select cc_closed_date_sk from call_center); +select cc_employees from (select * from call_center union all select * from call_center) as foo; +select * from (select * from call_center union all select * from call_center ) as foo; +select DISTINCT po.s_country from (select s_country from store union all select c_birth_country from customer) po order by po.s_country limit 13 offset 200; +select DISTINCT po.s_country from (select s_country from store union all select c_birth_country from customer) po where po.s_country like 'V%'; +select T.manager, count(T.list_price) from (select cc_market_manager as manager, cc_gmt_offset as list_price from call_center union all select s_manager, ss_list_price FROM jethro_store_sales JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk) T group by T.manager order by T.manager; +select T.manager, count(T.list_price) from (select s_manager as manager, ss_list_price as list_price FROM jethro_store_sales JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk union all select cc_market_manager,cc_gmt_offset from call_center) T group by T.manager order by T.manager; +select count(cc_call_center_id) from call_center union all select count(cp_type) from catalog_page union all select count(c_first_name) from customer union all select count(p_promo_name) from promotion union all select count(r_reason_desc) from reason union all select count(s_division_name) from store union all select count(w_warehouse_name) from warehouse; +select count(cc_call_center_id) as ABC from call_center union all select count(cp_type) from catalog_page union all select count(c_first_name) from customer union all select count(p_promo_name) from promotion union all select count(r_reason_desc) from reason union all select count(s_division_name) from store union all select count(w_warehouse_name) from warehouse order by ABC; +select 'AAA' as name, cp_catalog_number as value, count(*) d from catalog_page group by value union all select 'BBB' as name, cp_catalog_number as value, count(*) c from catalog_page group by value order by value,d limit 10; +select ss_item_sk, ss_store_sk from jethro_store_sales inner join jethro_item ON jethro_store_sales.ss_item_sk=item.i_item_sk inner join store ON jethro_store_sales.ss_store_sk=store.s_store_sk inner join reason ON item.i_item_sk=reason.r_reason_sk where i_item_sk = 21 group by ss_item_sk, ss_store_sk order by ss_item_sk, ss_store_sk; +select sum(s_store_sk) from jethro_store_sales join store on ss_store_sk = s_store_sk; +select sum(s_store_sk) from jethro_store_sales join store on ss_store_sk = s_store_sk and s_store_sk in (1,2); +SELECT SUM(ss_quantity) AS sum_ss_quantity_ok FROM (def_schema.jethro_store_sales AS jethro_store_sales INNER JOIN def_schema.date_dim AS date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE (date_dim.d_date >= TIMESTAMPADD(SQL_TSI_HOUR,-2,TIMESTAMPADD(SQL_TSI_HOUR,HOUR(now()),CAST(now() AS DATE))) AND date_dim.d_date < TIMESTAMPADD(SQL_TSI_HOUR,1,TIMESTAMPADD(SQL_TSI_HOUR,HOUR(now()),CAST(now() AS DATE)))) HAVING COUNT(1) > 0; +SELECT count(*) FROM jethro_store_sales WHERE ss_store_sk IN(SELECT DISTINCT s_store_sk FROM store UNION ALL SELECT DISTINCT i_item_sk FROM item); +select SUM_ITEM,i_color from (select sum(-i_item_sk) as SUM_ITEM, i_color from jethro_item group by i_color) ttt order by i_color; +select atan2(ss_addr_sk, 11),ss_addr_sk, ss_ext_sales_price from jethro_store_sales limit 2; +select atan2(5,10),ss_ext_sales_price,11 from jethro_store_sales limit 10; +select atan2(ss_addr_sk, ss_ext_sales_price),ss_addr_sk, ss_ext_sales_price from jethro_store_sales limit 2; +select atan2(ss_ext_sales_price,ss_addr_sk),ss_addr_sk, ss_ext_sales_price from jethro_store_sales limit 2; +select atan2(ss_customer_sk, ss_item_sk),ss_customer_sk, ss_item_sk from jethro_store_sales limit 2; +select atan2(ss_ext_list_price, ss_ext_wholesale_cost),ss_ext_list_price, ss_ext_wholesale_cost from jethro_store_sales limit 2; +select atan2(ss_ext_list_price, ss_ext_wholesale_cost),atan2(5,10) from jethro_store_sales limit 2; +select atan2(ss_ext_list_price, ss_ext_wholesale_cost),atan2(5,10),atan2(ss_ext_tax,ss_cdemo_sk),ss_ext_tax,ss_cdemo_sk from jethro_store_sales limit 2; +select atan2(ss_cdemo_sk,i_wholesale_cost),i_wholesale_cost,ss_cdemo_sk from jethro_store_sales join jethro_item on i_item_sk = ss_item_sk limit 2; +select atan2(i_manager_id,ss_coupon_amt),i_manager_id,ss_coupon_amt from jethro_store_sales join jethro_item on i_item_sk = ss_item_sk limit 2; +select atan2(ss_ext_sales_price, 11),ss_ext_sales_price,11 from jethro_store_sales limit 10; +select atan2(ss_ext_sales_price, ss_sold_date_sk),ss_ext_sales_price, ss_sold_date_sk from jethro_store_sales where ss_sold_date_sk is null and ss_ext_sales_price is not null limit 100; +select atan2(ss_ext_sales_price, ss_sold_date_sk),ss_ext_sales_price, ss_sold_date_sk from jethro_store_sales where ss_sold_date_sk is not null and ss_ext_sales_price is not null limit 100; +select atan2(ss_ext_sales_price, ss_sold_date_sk),ss_ext_sales_price, ss_sold_date_sk from jethro_store_sales limit 10; +SELECT ss_item_sk FROM (SELECT T1.ss_item_sk,T1.ss_store_sk, T2.i_color FROM jethro_store_sales AS T1 RIGHT JOIN jethro_item AS T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10) T3 WHERE T3.i_color='coral' order by ss_item_sk limit 20; +SELECT ss_item_sk FROM (SELECT T1.ss_item_sk,T1.ss_store_sk, T2.i_color FROM jethro_store_sales AS T1 LEFT JOIN jethro_item AS T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10) T3 WHERE T3.i_color='coral' order by ss_item_sk limit 20; +SELECT ss_item_sk FROM (SELECT ss_item_sk,ss_store_sk FROM jethro_store_sales) T1 LEFT JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM item) T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10 AND T2.i_color='coral' order by ss_item_sk limit 20; +select case when s_tax_precentage > 0.06 then s_tax_precentage else cast(s_tax_precentage as double) end as col from store; +select case when wr_return_tax > 100 then cast(wr_return_tax as int) when wr_return_tax <= 50.1 then cast(wr_return_tax as float) else wr_return_tax end as col from web_returns where wr_return_tax is not Null order by wr_return_tax desc limit 10; +select ss_item_sk, case when 1 = 1 then ss_sold_date_sk when 1=1 then ss_net_paid end from jethro_store_sales limit 1; +select i_item_sk, case when 1 = 1 then cast(0.1 as float) when 1=1 then 0 end from jethro_item limit 1; +select i_item_sk, case when 1 = 1 then 0.1 when 1=1 then 0 end from jethro_item limit 1; +SELECT COUNT(my_store_sales.ss_quantity) AS temp_quantity, SUM(CASE WHEN my_store_sales.ss_quantity > -1 THEN 1 ELSE 0 END) AS TEMP_SUM_ss_quantity, AVG(my_store_sales.ss_list_price) AS avg_ss_list_price_ok, COUNT(my_store_sales.ss_quantity) AS cnt_ss_quantity, MAX(my_store_sales.ss_list_price) AS max_ss_list_price_ok, MIN(my_store_sales.ss_list_price) AS min_ss_list_price_ok, my_store_sales.ss_item_sk AS ss_item_sk, my_store_sales.ss_customer_sk AS ss_customer_sk FROM jethro_store_sales AS my_store_sales LEFT OUTER JOIN jethro_item AS jethro_item ON my_store_sales.ss_item_sk = item.i_item_sk LEFT OUTER JOIN catalog_sales AS catalog_sales ON my_store_sales.ss_item_sk = catalog_sales.cs_item_sk LEFT OUTER JOIN catalog_returns AS catalog_returns ON my_store_sales.ss_item_sk = catalog_returns.cr_item_sk WHERE (my_store_sales.ss_item_sk IN (178243,104810,115079,19154) OR my_store_sales.ss_hdemo_sk IS NULL) AND ((my_store_sales.ss_customer_sk BETWEEN 1000 AND 2000000) OR my_store_sales.ss_customer_sk IS NULL) GROUP BY my_store_sales.ss_item_sk, my_store_sales.ss_customer_sk HAVING (COUNT(DISTINCT my_store_sales.ss_sales_price) >= 1 AND COUNT(DISTINCT my_store_sales.ss_sales_price) <= 3000000) ORDER BY temp_quantity DESC, TEMP_SUM_ss_quantity, avg_ss_list_price_ok, cnt_ss_quantity, max_ss_list_price_ok, min_ss_list_price_ok, ss_item_sk, ss_customer_sk limit 10; +SELECT cc_call_center_sk, cc_call_center_id FROM call_center p WHERE p.cc_employees IN (SELECT DISTINCT p.cc_employees FROM call_center p INNER JOIN customer ch ON p.cc_call_center_id = ch.c_customer_id INNER JOIN customer_address v ON p.cc_call_center_id = v.ca_address_id AND v.ca_street_number = 18 WHERE ch.c_customer_sk = 1); +SELECT dt.d_year,item.i_brand_id brand_id,item.i_brand brand,SUM(ss_ext_sales_price) ext_price FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manager_id = 1AND dt.d_moy = 12 AND dt.d_year = 1998 GROUP BY dt.d_year,item.i_brand,item.i_brand_id ORDER BY dt.d_year,ext_price DESC,brand_id limit 10; +SELECT AVG(ss_quantity),AVG(ss_ext_sales_price),AVG(ss_ext_wholesale_cost),SUM(ss_ext_wholesale_cost) FROM jethro_store_sales JOIN store ON store.s_store_sk = jethro_store_sales.ss_store_sk JOIN customer_demographics ON customer_demographics.cd_demo_sk = jethro_store_sales.ss_cdemo_sk JOIN household_demographics ON jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk JOIN customer_address ON jethro_store_sales.ss_addr_sk = customer_address.ca_address_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk WHERE date_dim.d_year = 2001 AND ((customer_demographics.cd_marital_status = 'M' AND customer_demographics.cd_education_status = '4 yr Degree' AND jethro_store_sales.ss_sales_price BETWEEN 100.00 AND 150.00 AND household_demographics.hd_dep_count = 3) OR (customer_demographics.cd_demo_sk = jethro_store_sales.ss_cdemo_sk AND customer_demographics.cd_marital_status = 'D' AND customer_demographics.cd_education_status = 'Primary' AND jethro_store_sales.ss_sales_price BETWEEN 50.00 AND 100.00 AND household_demographics.hd_dep_count = 1) OR (customer_demographics.cd_demo_sk = ss_cdemo_sk AND customer_demographics.cd_marital_status = 'U' AND customer_demographics.cd_education_status = 'Advanced Degree' AND jethro_store_sales.ss_sales_price BETWEEN 150.00 AND 200.00 AND household_demographics.hd_dep_count = 1)) AND ((customer_address.ca_country = 'United States' AND customer_address.ca_state IN ('KY','GA','NM') AND jethro_store_sales.ss_net_profit BETWEEN 100 AND 200) OR (store_sales.ss_addr_sk = customer_address.ca_address_sk AND customer_address.ca_country = 'United States' AND customer_address.ca_state IN ('MT','OR','IN') AND jethro_store_sales.ss_net_profit BETWEEN 150 AND 300) OR (store_sales.ss_addr_sk = customer_address.ca_address_sk AND customer_address.ca_country = 'United States' AND customer_address.ca_state IN ('WI','MO','WV') AND jethro_store_sales.ss_net_profit BETWEEN 50 AND 250)); +SELECT ca_zip,SUM(cs_sales_price) FROM catalog_sales JOIN customer ON catalog_sales.cs_bill_customer_sk = customer.c_customer_sk JOIN customer_address ON customer.c_current_addr_sk = customer_address.ca_address_sk JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk WHERE (substr(ca_zip,1,5) IN ('85669','86197','88274','83405','86475','85392','85460','80348','81792') OR customer_address.ca_state IN ('CA','WA','GA') OR catalog_sales.cs_sales_price > 500) AND date_dim.d_qoy = 2 AND date_dim.d_year = 2000 GROUP BY ca_zip ORDER BY ca_zip limit 10; +SELECT i_brand_id brand_id,i_brand brand,i_manufact_id,i_manufact,SUM(ss_ext_sales_price) ext_price FROM date_dim JOIN jethro_store_sales ON date_dim.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk JOIN customer ON jethro_store_sales.ss_customer_sk = customer.c_customer_sk JOIN customer_address ON customer.c_current_addr_sk = customer_address.ca_address_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk WHERE i_manager_id = 7 AND d_moy = 11 AND d_year = 1999 AND substr(ca_zip,1,5) <> substr(s_zip,1,5) GROUP BY i_brand,i_brand_id,i_manufact_id,i_manufact ORDER BY ext_price DESC,i_brand,i_brand_id,i_manufact_id,i_manufact limit 10; +SELECT i_item_desc,i_category,i_class,i_current_price,i_item_id,SUM(cs_ext_sales_price) AS itemrevenue,SUM(cs_ext_sales_price)*100 / SUM(cs_ext_sales_price),i_class AS revenueratio FROM catalog_sales JOIN jethro_item ON catalog_sales.cs_item_sk = item.i_item_sk JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk WHERE i_category IN ('Jewelry','Sports','Books') AND d_date BETWEEN '2001-01-12' AND '2001-02-11' GROUP BY i_item_id,i_item_desc,i_category,i_class,i_current_price ORDER BY i_category,i_class,i_item_id,i_item_desc,revenueratio limit 10; +SELECT * FROM (SELECT w_warehouse_name,i_item_id,SUM(CASE WHEN (CAST(d_date AS DATE) < CAST('1998-04-08' AS DATE)) THEN inv_quantity_on_hand ELSE 0 END) AS inv_before,SUM(CASE WHEN (CAST(d_date AS DATE) >= CAST('1998-04-08' AS DATE)) THEN inv_quantity_on_hand ELSE 0 END) AS inv_after FROM inventory JOIN warehouse ON inventory.inv_warehouse_sk = warehouse.w_warehouse_sk JOIN jethro_item ON item.i_item_sk = inventory.inv_item_sk JOIN date_dim ON inventory.inv_date_sk = date_dim.d_date_sk WHERE i_current_price BETWEEN 0.99 AND 1.49 AND d_date BETWEEN '1998-03-09' AND '1998-05-07' GROUP BY w_warehouse_name,i_item_id) x WHERE (CASE WHEN inv_before > 0 THEN inv_after / inv_before ELSE NULL END) BETWEEN 2.0 / 3.0 AND 3.0 / 2.0 ORDER BY w_warehouse_name,i_item_id limit 10; +SELECT i_product_name,i_brand,i_class,i_category,AVG(inv_quantity_on_hand) qoh FROM inventory JOIN date_dim ON inventory.inv_date_sk = date_dim.d_date_sk JOIN jethro_item ON inventory.inv_item_sk = item.i_item_sk JOIN warehouse ON inventory.inv_warehouse_sk = warehouse.w_warehouse_sk WHERE date_dim.d_month_seq BETWEEN 1193 AND 1193 + 11 GROUP BY i_product_name,i_brand,i_class,i_category ORDER BY qoh,i_product_name,i_brand,i_class,i_category limit 10; +SELECT i_item_id,AVG(cs_quantity) agg1,AVG(cs_list_price) agg2,AVG(cs_coupon_amt) agg3,AVG(cs_sales_price) agg4 FROM catalog_sales JOIN customer_demographics ON catalog_sales.cs_bill_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON catalog_sales.cs_item_sk = item.i_item_sk JOIN promotion ON catalog_sales.cs_promo_sk = promotion.p_promo_sk WHERE cd_gender = 'F' AND cd_marital_status = 'W' AND cd_education_status = 'Primary' AND (p_channel_email = 'N' OR p_channel_event = 'N') AND d_year = 1998 GROUP BY i_item_id ORDER BY i_item_id limit 10; +SELECT i_item_id,s_state,AVG(ss_quantity) agg1,AVG(ss_list_price) agg2,AVG(ss_coupon_amt) agg3,AVG(ss_sales_price) agg4 FROM jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE customer_demographics.cd_gender = 'F' AND customer_demographics.cd_marital_status = 'D' AND customer_demographics.cd_education_status = 'Unknown' AND date_dim.d_year = 1998 AND store.s_state IN ('KS','AL','MN','AL','SC','VT','TN') GROUP BY i_item_id,s_state ORDER BY i_item_id,s_state limit 10; +SELECT dt.d_year,item.i_brand_id brand_id,item.i_brand brand,SUM(ss_ext_sales_price) sum_agg FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manufact_id = 436 AND dt.d_moy = 12 GROUP BY dt.d_year,item.i_brand,item.i_brand_id ORDER BY dt.d_year,sum_agg DESC,brand_id limit 10; +SELECT SUM(cs1.cs_ext_discount_amt) AS excess_discount_amount FROM (SELECT cs.cs_item_sk AS cs_item_sk,cs.cs_ext_discount_amt AS cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date BETWEEN '2000-01-27' AND '2000-04-27') cs1 JOIN jethro_item i ON (i.i_item_sk = cs1.cs_item_sk) JOIN (SELECT cs2.cs_item_sk AS cs_item_sk,1.3 *AVG(cs_ext_discount_amt) AS avg_cs_ext_discount_amt FROM (SELECT cs.cs_item_sk AS cs_item_sk,cs.cs_ext_discount_amt AS cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date BETWEEN '2000-01-27' AND '2000-04-27') cs2 GROUP BY cs2.cs_item_sk) tmp1 ON (i.i_item_sk = tmp1.cs_item_sk) WHERE i.i_manufact_id = 436 AND cs1.cs_ext_discount_amt > tmp1.avg_cs_ext_discount_amt; +SELECT c_last_name,c_first_name,c_salutation,c_preferred_cust_flag,ss_ticket_number,cnt FROM (SELECT ss_ticket_number,ss_customer_sk,COUNT(*) cnt FROM jethro_store_sales JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN household_demographics ON jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk WHERE (date_dim.d_dom BETWEEN 1 AND 3 OR date_dim.d_dom BETWEEN 25 AND 28) AND (household_demographics.hd_buy_potential = '1001-5000' OR household_demographics.hd_buy_potential = '5001-10000') AND household_demographics.hd_vehicle_count > 0 AND (CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END) > 1.2 AND date_dim.d_year IN (1998,1998 +7,1998 +2) AND store.s_county IN ('Kittitas County','Adams County','Richland County','Furnas County','Orange County','Appanoose County','Franklin Parish','Tehama County','Williamson County') GROUP BY ss_ticket_number,ss_customer_sk) dn JOIN customer ON dn.ss_customer_sk = customer.c_customer_sk WHERE cnt BETWEEN 15 AND 20 ORDER BY c_last_name,c_first_name,c_salutation,c_preferred_cust_flag DESC limit 10; +SELECT w_state,i_item_id, SUM(CASE WHEN (CAST(d_date AS DATE) < CAST('1998-04-08' AS DATE)) THEN cs_sales_price -(CASE WHEN cr_refunded_cash IS NOT NULL THEN cr_refunded_cash ELSE 0 END) ELSE 0 END) AS sales_before,SUM(CASE WHEN (CAST(d_date AS DATE) >= CAST('1998-04-08' AS DATE)) THEN cs_sales_price -(CASE WHEN cr_refunded_cash IS NOT NULL THEN cr_refunded_cash ELSE 0 END) ELSE 0 END) AS sales_after FROM catalog_sales LEFT OUTER JOIN catalog_returns ON (catalog_sales.cs_order_number = catalog_returns.cr_order_number AND catalog_sales.cs_item_sk = catalog_returns.cr_item_sk) join warehouse on catalog_sales.cs_warehouse_sk = warehouse.w_warehouse_sk join jethro_item on item.i_item_sk = catalog_sales.cs_item_sk join date_dim on catalog_sales.cs_sold_date_sk = date_dim.d_date_sk WHERE i_current_price BETWEEN 0.99 AND 1.49 AND date_dim.d_date BETWEEN '1998-03-09' AND '1998-05-08' GROUP BY w_state,i_item_id ORDER BY w_state,i_item_id limit 10; +SELECT dt.d_year,item.i_category_id,item.i_category,SUM(ss_ext_sales_price) AS s FROM date_dim dt join jethro_store_sales on dt.d_date_sk = jethro_store_sales.ss_sold_date_sk join jethro_item on jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manager_id = 1 AND dt.d_moy = 12 AND dt.d_year = 1998 GROUP BY dt.d_year,item.i_category_id,item.i_category ORDER BY s DESC,dt.d_year,item.i_category_id,item.i_category limit 10; +SELECT s_store_name,s_store_id,SUM(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END) sun_sales,SUM(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END) mon_sales,SUM(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END) tue_sales,SUM(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END) wed_sales,SUM(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END) thu_sales,SUM(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END) fri_sales,SUM(CASE WHEN (d_day_name = 'Saturday') THEN ss_sales_price ELSE NULL END) sat_sales FROM date_dim join jethro_store_sales on date_dim.d_date_sk = jethro_store_sales.ss_sold_date_sk join store on store.s_store_sk = jethro_store_sales.ss_store_sk WHERE s_gmt_offset = -5 AND d_year = 1998 GROUP BY s_store_name, s_store_id ORDER BY s_store_name,s_store_id,sun_sales,mon_sales,tue_sales,wed_sales,thu_sales,fri_sales,sat_sales limit 10; +SELECT ca_zip,ca_county,SUM(ws_sales_price) FROM web_sales JOIN customer ON web_sales.ws_bill_customer_sk = customer.c_customer_sk JOIN customer_address ON customer.c_current_addr_sk = customer_address.ca_address_sk JOIN date_dim ON web_sales.ws_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON web_sales.ws_item_sk = item.i_item_sk WHERE (item.i_item_id IN (SELECT i_item_id FROM jethro_item i2 WHERE i2.i_item_sk IN (2,3,5,7,11,13,17,19,23,29))) AND d_qoy = 2 AND d_year = 2000 GROUP BY ca_zip,ca_county ORDER BY ca_zip,ca_county limit 10; +SELECT i_item_id,AVG(ss_quantity) agg1,AVG(ss_list_price) agg2,AVG(ss_coupon_amt) agg3,AVG(ss_sales_price) agg4 FROM jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk JOIN promotion ON jethro_store_sales.ss_promo_sk = promotion.p_promo_sk WHERE cd_gender = 'F' AND cd_marital_status = 'W' AND cd_education_status = 'Primary' AND (p_channel_email = 'N' OR p_channel_event = 'N') AND d_year = 1998 GROUP BY i_item_id ORDER BY i_item_id limit 10; +SELECT SUM(ss_quantity) FROM jethro_store_sales JOIN store ON store.s_store_sk = jethro_store_sales.ss_store_sk JOIN customer_demographics ON customer_demographics.cd_demo_sk = jethro_store_sales.ss_cdemo_sk JOIN customer_address ON jethro_store_sales.ss_addr_sk = customer_address.ca_address_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk WHERE d_year = 1998 AND ((cd_marital_status = 'M' AND cd_education_status = '4 yr Degree' AND ss_sales_price BETWEEN 100.00 AND 150.00) OR (cd_marital_status = 'M' AND cd_education_status = '4 yr Degree' AND ss_sales_price BETWEEN 50.00 AND 100.00) OR (cd_marital_status = 'M' AND cd_education_status = '4 yr Degree' AND ss_sales_price BETWEEN 150.00 AND 200.00)) AND ((ca_country = 'United States' AND ca_state IN ('KY','GA','NM') AND ss_net_profit BETWEEN 0 AND 2000) OR (ca_country = 'United States' AND ca_state IN ('MT','OR','IN') AND ss_net_profit BETWEEN 150 AND 3000) OR (ca_country = 'United States' AND ca_state IN ('WI','MO','WV') AND ss_net_profit BETWEEN 50 AND 25000)); +SELECT dt.d_year,item.i_brand_id brand_id,item.i_brand brand,SUM(ss_ext_sales_price) ext_price FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manager_id = 1 AND dt.d_moy = 12 AND dt.d_year = 1998 GROUP BY dt.d_year,item.i_brand,item.i_brand_id ORDER BY dt.d_year,ext_price DESC,brand_id limit 10; +SELECT c_last_name,c_first_name,ca_city,bought_city,ss_ticket_number,amt,profit FROM (SELECT ss_ticket_number,ss_customer_sk,ca_city bought_city,SUM(ss_coupon_amt) amt,SUM(ss_net_profit) profit FROM jethro_store_sales JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN household_demographics ON jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk JOIN customer_address ON jethro_store_sales.ss_addr_sk = customer_address.ca_address_sk WHERE (household_demographics.hd_dep_count = 4 OR household_demographics.hd_vehicle_count = 2)AND date_dim.d_dow IN (6,0)AND date_dim.d_year IN (1998,1998 +1,1998 +2)AND store.s_city IN ('Rosedale','Bethlehem','Clinton','Clifton','Springfield','Midway') GROUP BY ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city) dn JOIN customer ON dn.ss_customer_sk = customer.c_customer_sk JOIN customer_address current_addr ON customer.c_current_addr_sk = current_addr.ca_address_sk WHERE current_addr.ca_city <> bought_city ORDER BY c_last_name,c_first_name,ca_city,bought_city,ss_ticket_number limit 10; +SELECT s_store_name,s_company_id,s_street_number,s_street_name,s_street_type,s_suite_number,s_city,s_county,s_state,s_zip,SUM(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk <= 30) THEN 1 ELSE 0 END) AS d30days,SUM(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 30) AND (sr_returned_date_sk - ss_sold_date_sk <= 60) THEN 1 ELSE 0 END) AS d3160days,SUM(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 60) AND (sr_returned_date_sk - ss_sold_date_sk <= 90) THEN 1 ELSE 0 END) AS d6190days,SUM(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 90) AND (sr_returned_date_sk - ss_sold_date_sk <= 120) THEN 1 ELSE 0 END) AS d91120days,SUM(CASE WHEN (sr_returned_date_sk - ss_sold_date_sk > 120) THEN 1 ELSE 0 END) AS d120days FROM jethro_store_sales JOIN store_returns ON jethro_store_sales.ss_ticket_number = store_returns.sr_ticket_number JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN date_dim d1 ON jethro_store_sales.ss_sold_date_sk = d1.d_date_sk JOIN date_dim d2 ON sr_returned_date_sk = d2.d_date_sk WHERE d2.d_year = 2000 AND d2.d_moy = 9 AND jethro_store_sales.ss_item_sk = store_returns.sr_item_sk AND jethro_store_sales.ss_customer_sk = store_returns.sr_customer_sk GROUP BY s_store_name,s_company_id,s_street_number,s_street_name,s_street_type,s_suite_number,s_city,s_county,s_state,s_zip ORDER BY s_store_name, s_company_id, s_street_number,s_street_name,s_street_type,s_suite_number,s_city,s_county,s_state,s_zip limit 10; +SELECT i_brand_id brand_id,i_brand brand,SUM(ss_ext_sales_price) ext_price FROM date_dim JOIN jethro_store_sales ON date_dim.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE i_manager_id = 36 AND d_moy = 12 AND d_year = 2001 GROUP BY i_brand,i_brand_id ORDER BY ext_price DESC,i_brand_id limit 10; +SELECT w_warehouse_name,w_warehouse_sq_ft,w_city,w_county,w_state,w_country,ship_carriers,year,SUM(jan_sales) AS jan_sales,SUM(feb_sales) AS feb_sales,SUM(mar_sales) AS mar_sales,SUM(apr_sales) AS apr_sales,SUM(may_sales) AS may_sales, SUM(jun_sales) AS jun_sales,SUM(jul_sales) AS jul_sales,SUM(aug_sales) AS aug_sales,SUM(sep_sales) AS sep_sales,SUM(oct_sales) AS oct_sales,SUM(nov_sales) AS nov_sales,SUM(dec_sales) AS dec_sales,SUM(jan_sales / w_warehouse_sq_ft) AS jan_sales_per_sq_foot, SUM(feb_sales / w_warehouse_sq_ft) AS feb_sales_per_sq_foot,SUM(mar_sales / w_warehouse_sq_ft) AS mar_sales_per_sq_foot,SUM(apr_sales / w_warehouse_sq_ft) AS apr_sales_per_sq_foot,SUM(may_sales / w_warehouse_sq_ft) AS may_sales_per_sq_foot, SUM(jun_sales / w_warehouse_sq_ft) AS jun_sales_per_sq_foot,SUM(jul_sales / w_warehouse_sq_ft) AS jul_sales_per_sq_foot,SUM(aug_sales / w_warehouse_sq_ft) AS aug_sales_per_sq_foot,SUM(sep_sales / w_warehouse_sq_ft) AS sep_sales_per_sq_foot, SUM(oct_sales / w_warehouse_sq_ft) AS oct_sales_per_sq_foot,SUM(nov_sales / w_warehouse_sq_ft) AS nov_sales_per_sq_foot,SUM(dec_sales / w_warehouse_sq_ft) AS dec_sales_per_sq_foot,SUM(jan_net) AS jan_net,SUM(feb_net) AS feb_net, SUM(mar_net) AS mar_net,SUM(apr_net) AS apr_net,SUM(may_net) AS may_net,SUM(jun_net) AS jun_net,SUM(jul_net) AS jul_net,SUM(aug_net) AS aug_net,SUM(sep_net) AS sep_net,SUM(oct_net) AS oct_net,SUM(nov_net) AS nov_net,SUM(dec_net) AS dec_net FROM (SELECT w_warehouse_name,w_warehouse_sq_ft,w_city,w_county,w_state,w_country,concat('DIAMOND',',','AIRBORNE') AS ship_carriers,d_year AS YEAR,SUM(CASE WHEN d_moy = 1 THEN ws_sales_price*ws_quantity ELSE 0 END) AS jan_sales, SUM(CASE WHEN d_moy = 2 THEN ws_sales_price*ws_quantity ELSE 0 END) AS feb_sales,SUM(CASE WHEN d_moy = 3 THEN ws_sales_price*ws_quantity ELSE 0 END) AS mar_sales,SUM(CASE WHEN d_moy = 4 THEN ws_sales_price*ws_quantity ELSE 0 END) AS apr_sales, SUM(CASE WHEN d_moy = 5 THEN ws_sales_price*ws_quantity ELSE 0 END) AS may_sales,SUM(CASE WHEN d_moy = 6 THEN ws_sales_price*ws_quantity ELSE 0 END) AS jun_sales,SUM(CASE WHEN d_moy = 7 THEN ws_sales_price*ws_quantity ELSE 0 END) AS jul_sales,SUM(CASE WHEN d_moy = 8 THEN ws_sales_price*ws_quantity ELSE 0 END) AS aug_sales,SUM(CASE WHEN d_moy = 9 THEN ws_sales_price*ws_quantity ELSE 0 END) AS sep_sales,SUM(CASE WHEN d_moy = 10 THEN ws_sales_price*ws_quantity ELSE 0 END) AS oct_sales, SUM(CASE WHEN d_moy = 11 THEN ws_sales_price*ws_quantity ELSE 0 END) AS nov_sales,SUM(CASE WHEN d_moy = 12 THEN ws_sales_price*ws_quantity ELSE 0 END) AS dec_sales,SUM(CASE WHEN d_moy = 1 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS jan_net, SUM(CASE WHEN d_moy = 2 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS feb_net,SUM(CASE WHEN d_moy = 3 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS mar_net,SUM(CASE WHEN d_moy = 4 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS apr_net, SUM(CASE WHEN d_moy = 5 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS may_net,SUM(CASE WHEN d_moy = 6 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS jun_net,SUM(CASE WHEN d_moy = 7 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS jul_net, SUM(CASE WHEN d_moy = 8 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS aug_net,SUM(CASE WHEN d_moy = 9 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS sep_net,SUM(CASE WHEN d_moy = 10 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS oct_net, SUM(CASE WHEN d_moy = 11 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS nov_net,SUM(CASE WHEN d_moy = 12 THEN ws_net_paid_inc_tax*ws_quantity ELSE 0 END) AS dec_net FROM web_sales join warehouse on web_sales.ws_warehouse_sk = warehouse.w_warehouse_sk join date_dim on web_sales.ws_sold_date_sk = date_dim.d_date_sk join time_dim on web_sales.ws_sold_time_sk = time_dim.t_time_sk join ship_mode on web_sales.ws_ship_mode_sk = ship_mode.sm_ship_mode_sk WHERE d_year = 2002 AND t_time BETWEEN 49530 AND 49530 +28800 AND sm_carrier IN ('DIAMOND','AIRBORNE') GROUP BY w_warehouse_name,w_warehouse_sq_ft,w_city,w_county,w_state,w_country,d_year UNION ALL SELECT w_warehouse_name,w_warehouse_sq_ft,w_city,w_county,w_state,w_country,concat('DIAMOND',',','AIRBORNE') AS ship_carriers, d_year AS YEAR,SUM(CASE WHEN d_moy = 1 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS jan_sales,SUM(CASE WHEN d_moy = 2 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS feb_sales,SUM(CASE WHEN d_moy = 3 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS mar_sales, SUM(CASE WHEN d_moy = 4 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS apr_sales,SUM(CASE WHEN d_moy = 5 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS may_sales,SUM(CASE WHEN d_moy = 6 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS jun_sales, SUM(CASE WHEN d_moy = 7 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS jul_sales,SUM(CASE WHEN d_moy = 8 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS aug_sales,SUM(CASE WHEN d_moy = 9 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS sep_sales, SUM(CASE WHEN d_moy = 10 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS oct_sales,SUM(CASE WHEN d_moy = 11 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS nov_sales,SUM(CASE WHEN d_moy = 12 THEN cs_ext_sales_price*cs_quantity ELSE 0 END) AS dec_sales, SUM(CASE WHEN d_moy = 1 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS jan_net,SUM(CASE WHEN d_moy = 2 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS feb_net,SUM(CASE WHEN d_moy = 3 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS mar_net, SUM(CASE WHEN d_moy = 4 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS apr_net,SUM(CASE WHEN d_moy = 5 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS may_net,SUM(CASE WHEN d_moy = 6 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS jun_net, SUM(CASE WHEN d_moy = 7 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS jul_net,SUM(CASE WHEN d_moy = 8 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS aug_net,SUM(CASE WHEN d_moy = 9 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS sep_net, SUM(CASE WHEN d_moy = 10 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS oct_net,SUM(CASE WHEN d_moy = 11 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS nov_net,SUM(CASE WHEN d_moy = 12 THEN cs_net_paid_inc_ship_tax*cs_quantity ELSE 0 END) AS dec_net FROM catalog_sales join warehouse on catalog_sales.cs_warehouse_sk = warehouse.w_warehouse_sk join date_dim on catalog_sales.cs_sold_date_sk = date_dim.d_date_sk join time_dim on catalog_sales.cs_sold_time_sk = time_dim.t_time_sk join ship_mode on catalog_sales.cs_ship_mode_sk = ship_mode.sm_ship_mode_sk WHERE d_year = 2002 AND t_time BETWEEN 49530 AND 49530 +28800 AND sm_carrier IN ('DIAMOND','AIRBORNE') GROUP BY w_warehouse_name,w_warehouse_sq_ft,w_city,w_county,w_state, w_country,d_year) x group by w_warehouse_name,w_warehouse_sq_ft,w_city,w_county,w_state,w_country,ship_carriers,year order by w_warehouse_name limit 10; +SELECT c_last_name,c_first_name,ca_city,bought_city,ss_ticket_number,extended_price,extended_tax,list_price FROM (SELECT ss_ticket_number,ss_customer_sk,ca_city bought_city, SUM(ss_ext_sales_price) extended_price,SUM(ss_ext_list_price) list_price,SUM(ss_ext_tax) extended_tax FROM jethro_store_sales join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk join store on jethro_store_sales.ss_store_sk = store.s_store_sk join household_demographics on jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk join customer_address on jethro_store_sales.ss_addr_sk = customer_address.ca_address_sk WHERE date_dim.d_dom BETWEEN 1 AND 2 AND (household_demographics.hd_dep_count = 4 OR household_demographics.hd_vehicle_count = 2) AND date_dim.d_year IN (1998,1998 +1,1998 +2) AND store.s_city IN ('Rosedale','Bethlehem','Midway') GROUP BY ss_ticket_number,ss_customer_sk,ss_addr_sk,ca_city) dn join customer on dn.ss_customer_sk = customer.c_customer_sk join customer_address current_addr on customer.c_current_addr_sk = current_addr.ca_address_sk WHERE current_addr.ca_city <> bought_city ORDER BY c_last_name, ss_ticket_number limit 10; +SELECT i_brand_id brand_id,i_brand brand,t_hour,t_minute,SUM(ext_price) ext_price FROM jethro_item JOIN (SELECT ws_ext_sales_price AS ext_price,ws_sold_date_sk AS sold_date_sk,ws_item_sk AS sold_item_sk,ws_sold_time_sk AS time_sk FROM web_sales join date_dim on date_dim.d_date_sk = web_sales.ws_sold_date_sk WHERE d_moy = 12 AND d_year = 2001 UNION ALL SELECT cs_ext_sales_price AS ext_price, cs_sold_date_sk AS sold_date_sk, cs_item_sk AS sold_item_sk, cs_sold_time_sk AS time_sk FROM catalog_sales join date_dim on date_dim.d_date_sk = catalog_sales.cs_sold_date_sk WHERE d_moy = 12 AND d_year = 2001 UNION ALL SELECT ss_ext_sales_price AS ext_price, ss_sold_date_sk AS sold_date_sk,ss_item_sk AS sold_item_sk,ss_sold_time_sk AS time_sk FROM jethro_store_sales join date_dim on date_dim.d_date_sk = jethro_store_sales.ss_sold_date_sk WHERE d_moy = 12 AND d_year = 2001) tmp ON tmp.sold_item_sk = item.i_item_sk JOIN time_dim ON tmp.time_sk = time_dim.t_time_sk WHERE i_manager_id = 1 AND (t_meal_time = 'breakfast' OR t_meal_time = 'dinner') GROUP BY i_brand,i_brand_id,t_hour,t_minute ORDER BY brand,t_hour,t_minute,ext_price DESC,i_brand_id limit 10; +SELECT c_last_name,c_first_name,c_salutation,c_preferred_cust_flag,ss_ticket_number,cnt FROM (SELECT ss_ticket_number,ss_customer_sk,COUNT(*) cnt FROM jethro_store_sales join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk join store on jethro_store_sales.ss_store_sk = store.s_store_sk join household_demographics on jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk WHERE date_dim.d_dom BETWEEN 1 AND 2 AND (household_demographics.hd_buy_potential = '1001-5000' OR household_demographics.hd_buy_potential = '5001-10000') AND household_demographics.hd_vehicle_count > 0 AND CASE WHEN household_demographics.hd_vehicle_count > 0 THEN household_demographics.hd_dep_count / household_demographics.hd_vehicle_count ELSE NULL END> 1 AND date_dim.d_year IN (1998,1998 +1,1998 +2) AND store.s_county IN ('Kittitas County','Adams County','Richland County','Furnas County','Williamson County') GROUP BY ss_ticket_number,ss_customer_sk) dj join customer on dj.ss_customer_sk = customer.c_customer_sk WHERE cnt BETWEEN 1 AND 5 ORDER BY c_last_name, c_first_name,c_salutation,c_preferred_cust_flag,ss_ticket_number,cnt DESC; +SELECT channel,col_name,d_year,d_qoy,i_category,COUNT(*) sales_cnt,SUM(ext_sales_price) sales_amt FROM (SELECT 'store' AS channel,'ss_addr_sk' col_name,d_year,d_qoy,i_category,ss_ext_sales_price ext_sales_price FROM jethro_store_sales join jethro_item on jethro_store_sales.ss_item_sk = item.i_item_sk join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk WHERE ss_addr_sk IS NULL UNION ALL SELECT 'web' AS channel,'ws_web_page_sk' col_name,d_year,d_qoy,i_category,ws_ext_sales_price ext_sales_price FROM web_sales join jethro_item on web_sales.ws_item_sk = item.i_item_sk join date_dim on web_sales.ws_sold_date_sk = date_dim.d_date_sk WHERE ws_web_page_sk IS NULL UNION ALL SELECT 'catalog' AS channel,'cs_warehouse_sk' col_name,d_year,d_qoy,i_category,cs_ext_sales_price ext_sales_price FROM catalog_sales join jethro_item on catalog_sales.cs_item_sk = item.i_item_sk join date_dim on catalog_sales.cs_sold_date_sk = date_dim.d_date_sk WHERE cs_warehouse_sk IS NULL ) foo GROUP BY channel,col_name,d_year,d_qoy,i_category ORDER BY channel,col_name,d_year,d_qoy,i_category limit 10; +SELECT c_last_name,c_first_name,substr(s_city,1,30) sub,ss_ticket_number,amt,profit FROM (SELECT ss_ticket_number,ss_customer_sk,store.s_city,SUM(ss_coupon_amt) amt,SUM(ss_net_profit) profit FROM jethro_store_sales join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk join store on jethro_store_sales.ss_store_sk = store.s_store_sk join household_demographics on jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk WHERE (household_demographics.hd_dep_count = 8 OR household_demographics.hd_vehicle_count > 0) AND date_dim.d_dow = 1 AND date_dim.d_year IN (1998,1998 +1,1998 +2) AND store.s_number_employees BETWEEN 200 AND 295 GROUP BY ss_ticket_number,ss_customer_sk,ss_addr_sk,store.s_city) ms join customer on ms.ss_customer_sk = customer.c_customer_sk ORDER BY c_last_name,c_first_name,sub,ss_ticket_number,amt,profit limit 10; +SELECT i_item_id,i_item_desc,i_current_price FROM jethro_item join inventory on inv_item_sk = i_item_sk join date_dim on d_date_sk = inv_date_sk join jethro_store_sales on ss_item_sk = i_item_sk WHERE i_current_price BETWEEN 30 AND 30 +30 AND d_date BETWEEN '2002-05-30' AND '2002-07-30' AND i_manufact_id IN (437,129,727,663) AND inv_quantity_on_hand BETWEEN 100 AND 500 GROUP BY i_item_id,i_item_desc,i_current_price ORDER BY i_item_id limit 10; +SELECT c_customer_id AS customer_id,concat(c_last_name,', ',c_first_name) AS customername FROM customer join customer_address on customer.c_current_addr_sk = customer_address.ca_address_sk join customer_demographics on customer_demographics.cd_demo_sk = customer.c_current_cdemo_sk join household_demographics on household_demographics.hd_demo_sk = customer.c_current_hdemo_sk join income_band on income_band.ib_income_band_sk = household_demographics.hd_income_band_sk join store_returns on store_returns.sr_cdemo_sk = customer_demographics.cd_demo_sk WHERE ca_city = 'Hopewell' AND ib_lower_bound >= 32287 AND ib_upper_bound <= 32287 + 50000 ORDER BY customer_id limit 10; +SELECT substr(r_reason_desc,1,20) AS r,AVG(ws_quantity) wq,AVG(wr_refunded_cash) ref,AVG(wr_fee) fee FROM web_sales join web_returns on web_sales.ws_item_sk = web_returns.wr_item_sk join web_page on web_sales.ws_web_page_sk = web_page.wp_web_page_sk join customer_demographics cd1 on cd1.cd_demo_sk = web_returns.wr_refunded_cdemo_sk join customer_demographics cd2 on cd2.cd_demo_sk = web_returns.wr_returning_cdemo_sk join customer_address on customer_address.ca_address_sk = web_returns.wr_refunded_addr_sk join date_dim on web_sales.ws_sold_date_sk = date_dim.d_date_sk join reason on reason.r_reason_sk = web_returns.wr_reason_sk WHERE web_sales.ws_order_number = web_returns.wr_order_number AND d_year = 1998 AND ((cd1.cd_marital_status = 'M' AND cd1.cd_marital_status = cd2.cd_marital_status AND cd1.cd_education_status = '4 yr Degree' AND cd1.cd_education_status = cd2.cd_education_status AND ws_sales_price BETWEEN 100.00 AND 150.00) OR (cd1.cd_marital_status = 'D' AND cd1.cd_marital_status = cd2.cd_marital_status AND cd1.cd_education_status = 'Primary' AND cd1.cd_education_status = cd2.cd_education_status AND ws_sales_price BETWEEN 50.00 AND 100.00) OR (cd1.cd_marital_status = 'U' AND cd1.cd_marital_status = cd2.cd_marital_status AND cd1.cd_education_status = 'Advanced Degree' AND cd1.cd_education_status = cd2.cd_education_status AND ws_sales_price BETWEEN 150.00 AND 200.00)) AND ((ca_country = 'United States' AND ca_state IN ('KY','GA','NM') AND ws_net_profit BETWEEN 100 AND 200) OR (ca_country = 'United States' AND ca_state IN ('MT','OR','IN') AND ws_net_profit BETWEEN 150 AND 300) OR (ca_country = 'United States' AND ca_state IN ('WI','MO','WV') AND ws_net_profit BETWEEN 50 AND 250)) GROUP BY substr(r_reason_desc,1,20) ORDER BY r,wq,ref,fee limit 10; +SELECT l1, f1, d1, l2, f2, d2 FROM (SELECT DISTINCT c_last_name AS l1,c_first_name AS f1,d_date AS d1 FROM jethro_store_sales JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN customer ON jethro_store_sales.ss_customer_sk = customer.c_customer_sk WHERE d_month_seq BETWEEN 1193 AND 1193 +11) t1 LEFT OUTER JOIN (SELECT DISTINCT c_last_name AS l2,c_first_name AS f2,d_date AS d2 FROM catalog_sales JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk JOIN customer ON catalog_sales.cs_bill_customer_sk = customer.c_customer_sk WHERE d_month_seq BETWEEN 1193 AND 1193 +11) t2 ON t1.l1 = t2.l2 AND t1.f1 = t2.f2 AND t1.d1 = t2.d2 LEFT OUTER JOIN (SELECT DISTINCT c_last_name AS l3, c_first_name AS f3,d_date AS d3 FROM web_sales JOIN date_dim ON web_sales.ws_sold_date_sk = date_dim.d_date_sk JOIN customer ON web_sales.ws_bill_customer_sk = customer.c_customer_sk WHERE d_month_seq BETWEEN 1193 AND 1193 +11) t3 ON t1.l1 = t3.l3 AND t1.f1 = t3.f3 AND t1.d1 = t3.d3 WHERE l1 <> '' AND f1 IS not NULL AND l2 <> '' AND f2 <> '' AND d2 IS not NULL Order by l1, f1, d1, l2, f2, d2, l3, d3, f3 limit 10; +SELECT * FROM (SELECT i_category,i_class,i_brand,s_store_name,s_company_name,d_moy,SUM(ss_sales_price) sum_sales,AVG(ss_sales_price) avg_monthly_sales FROM jethro_item join jethro_store_sales on jethro_store_sales.ss_item_sk = item.i_item_sk join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk join store on jethro_store_sales.ss_store_sk = store.s_store_sk WHERE d_year IN (2000) AND ((i_category IN ('Home','Books','Electronics') AND i_class IN ('wallpaper','parenting','musical')) OR (i_category IN ('Shoes','Jewelry','Men') AND i_class IN ('womens','birdal','pants'))) GROUP BY i_category,i_class,i_brand,s_store_name,s_company_name,d_moy) tmp1 WHERE CASE WHEN (avg_monthly_sales <> 0) THEN (ABS(sum_sales - avg_monthly_sales) / avg_monthly_sales) ELSE NULL END> 0.1 ORDER BY sum_sales - avg_monthly_sales,s_store_name limit 10; +SELECT cc_call_center_id Call_Center,cc_name Call_Center_Name,cc_manager Manager,SUM(cr_net_loss) Returns_Loss FROM call_center join catalog_returns on catalog_returns.cr_call_center_sk = call_center.cc_call_center_sk join date_dim on catalog_returns.cr_returned_date_sk = date_dim.d_date_sk join customer on catalog_returns.cr_returning_customer_sk = customer.c_customer_sk join customer_address on customer_address.ca_address_sk = customer.c_current_addr_sk join customer_demographics on customer_demographics.cd_demo_sk = customer.c_current_cdemo_sk join household_demographics on household_demographics.hd_demo_sk = customer.c_current_hdemo_sk WHERE d_year = 1999 AND d_moy = 11 AND ((cd_marital_status = 'M' AND cd_education_status = 'Unknown') OR (cd_marital_status = 'W' AND cd_education_status = 'Advanced Degree')) AND hd_buy_potential LIKE '0-500%' AND ca_gmt_offset = -7 GROUP BY cc_call_center_id,cc_name,cc_manager,cd_marital_status,cd_education_status ORDER BY Returns_Loss DESC; +SELECT sum(case when ssci.customer_sk is not null and csci.customer_sk is null then 1 else 0 end) as store_only,sum(case when ssci.customer_sk is null and csci.customer_sk is not null then 1 else 0 end) as catalog_only,sum(case when ssci.customer_sk is not null and csci.customer_sk is not null then 1 else 0 end) as store_and_catalog FROM (SELECT ss.ss_customer_sk as customer_sk,ss.ss_item_sk as item_sk FROM jethro_store_sales ss JOIN date_dim d1 ON (ss.ss_sold_date_sk = d1.d_date_sk) WHERE d1.d_month_seq >= 1206 and d1.d_month_seq <= 1217 GROUP BY ss.ss_customer_sk, ss.ss_item_sk) ssci JOIN (SELECT cs.cs_bill_customer_sk as customer_sk,cs.cs_item_sk as item_sk FROM catalog_sales cs JOIN date_dim d2 ON (cs.cs_sold_date_sk = d2.d_date_sk) WHERE d2.d_month_seq >= 1206 and d2.d_month_seq <= 1217 GROUP BY cs.cs_bill_customer_sk, cs.cs_item_sk) csci ON (ssci.customer_sk=csci.customer_sk and ssci.item_sk = csci.item_sk); +SELECT ss_customer_sk,SUM(act_sales) sumsales FROM (SELECT ss_item_sk,ss_ticket_number,ss_customer_sk,CASE WHEN sr_return_quantity IS NOT NULL THEN (ss_quantity - sr_return_quantity)*ss_sales_price ELSE (ss_quantity*ss_sales_price) END act_sales FROM jethro_store_sales LEFT OUTER JOIN store_returns ON (store_returns.sr_item_sk = jethro_store_sales.ss_item_sk AND store_returns.sr_ticket_number = jethro_store_sales.ss_ticket_number) JOIN reason ON store_returns.sr_reason_sk = reason.r_reason_sk WHERE r_reason_desc = 'Did not like the warranty') t where ss_customer_sk is not null GROUP BY ss_customer_sk ORDER BY ss_customer_sk, sumsales limit 10; +SELECT count(distinct ws_order_number),sum(ws_ext_ship_cost),sum(ws_net_profit) FROM web_sales ws1 JOIN customer_address ca ON (ws1.ws_ship_addr_sk = ca.ca_address_sk) JOIN web_site s ON (ws1.ws_web_site_sk = s.web_site_sk) JOIN date_dim d ON (ws1.ws_ship_date_sk = d.d_date_sk) WHERE d.d_date between '1999-05-01' and '1999-07-01' and ca.ca_state = 'TX' and s.web_company_name = 'pri' limit 10; +SELECT COUNT(DISTINCT ws1.ws_order_number),SUM(ws1.ws_ext_ship_cost),SUM(ws1.ws_net_profit) FROM web_sales ws1 JOIN customer_address ca ON (ws1.ws_ship_addr_sk = ca.ca_address_sk) JOIN web_site s ON (ws1.ws_web_site_sk = s.web_site_sk) JOIN date_dim d ON (ws1.ws_ship_date_sk = d.d_date_sk) WHERE d.d_date BETWEEN '2002-05-01' AND '2002-06-30' AND ca.ca_state = 'GA' AND s.web_company_name = 'pri'; +SELECT COUNT(*) AS c FROM jethro_store_sales join household_demographics on jethro_store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk join time_dim on jethro_store_sales.ss_sold_time_sk = time_dim.t_time_sk join store on jethro_store_sales.ss_store_sk = store.s_store_sk WHERE time_dim.t_hour = 8 AND time_dim.t_minute >= 30 AND household_demographics.hd_dep_count = 5 AND store.s_store_name = 'ese' ORDER BY c limit 10; +SELECT SUM(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NULL THEN 1 ELSE 0 END) store_only,SUM(CASE WHEN ssci.customer_sk IS NULL AND csci.customer_sk IS NOT NULL THEN 1 ELSE 0 END) catalog_only,SUM(CASE WHEN ssci.customer_sk IS NOT NULL AND csci.customer_sk IS NOT NULL THEN 1 ELSE 0 END) store_and_catalog FROM (SELECT ss_customer_sk customer_sk,ss_item_sk item_sk FROM jethro_store_sales JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk WHERE d_month_seq BETWEEN 1193 AND 1193 + 11 GROUP BY ss_customer_sk,ss_item_sk) ssci JOIN (SELECT cs_bill_customer_sk customer_sk, cs_item_sk item_sk FROM catalog_sales JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk WHERE d_month_seq BETWEEN 1193 AND 1193 + 11 GROUP BY cs_bill_customer_sk,cs_item_sk) csci ON (ssci.customer_sk = csci.customer_sk AND ssci.item_sk = csci.item_sk) limit 100; +SELECT i_item_desc,i_category,i_class,i_current_price,i_item_id,SUM(ss_ext_sales_price) AS itemrevenue,SUM(ss_ext_sales_price)*100 / SUM(ss_ext_sales_price) AS revenueratio FROM jethro_store_sales join jethro_item on jethro_store_sales.ss_item_sk = item.i_item_sk join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk WHERE i_category IN ('Jewelry','Sports','Books') AND d_date BETWEEN CAST('2001-01-12' AS DATE) AND (CAST('2001-02-11' AS DATE)) GROUP BY i_item_id,i_item_desc,i_category,i_class,i_current_price ORDER BY i_category,i_class,i_item_id,i_item_desc,revenueratio limit 10; +select substr(i_color, 1, 2),count(distinct ss_customer_sk) from jethro_store_sales join jethro_item on ss_item_sk = i_item_sk group by substr(i_color, 1,2) order by substr(i_color, 1,2); +select hour(i_rec_start_date), sum(i_item_sk) from jethro_item where hour(i_rec_start_date) is not null group by year(i_rec_start_date),hour(i_rec_start_date),i_item_sk order by hour(i_rec_start_date),i_item_sk limit 10; +CREATE VIEW ahikam (A, L1, L2, B, C, D) AS SELECT cast (cc_call_center_sk as bigint), 2, 5, CAST(cc_sq_ft AS FLOAT) + 8 AS cc_sq_ft_example, cc_rec_start_date, cc_tax_percentage FROM call_center UNION ALL SELECT 2, i_item_sk, 3, CAST(i_brand_id AS FLOAT), i_rec_start_date, i_current_price FROM jethro_item; +CREATE VIEW ahikam2 (AA, BB, LL1, LL2, CC, DD) AS SELECT cc_call_center_sk+1, CAST(cc_sq_ft AS FLOAT) + 10, pi(), 8, cc_rec_start_date, cc_tax_percentage FROM call_center UNION ALL SELECT i_item_sk, CAST(i_brand_id AS FLOAT), 7, 10, i_rec_start_date, i_current_price FROM jethro_item; +SELECT 'a', SUM(A), COUNT(B), COUNT(DISTINCT B), L1, 1, D, YEAR(now()) FROM ahikam WHERE D IS NOT NULL GROUP BY D,L1, 'a' ORDER BY D, 1, l1 limit 10; +SELECT L1, 6, '1', 1, CASE D WHEN 0.01 THEN 1 WHEN 0.05 THEN 5 WHEN 0.09 THEN 9 WHEN 0.11 THEN 11 WHEN 0.12 THEN 12 WHEN 0.13 THEN 13 WHEN 0.14 THEN 14 WHEN 0.15 THEN 14 WHEN 0.20 THEN 0 WHEN 0.16 THEN 16 ELSE 200 END AS CASE_IF, SUM(A), COUNT(B), COUNT(DISTINCT B) FROM ahikam AS ahikam_outer_query WHERE D IS NOT NULL AND D NOT IN (0.01111,0.05555,0.09999,0.11111111) GROUP BY 1,3,4,5 ORDER BY 1,2,3,4,5,6,7 LIMIT 10; +SELECT i_brand, 5, COUNT(A), year ('1996-08-01 10:10:00'), year ('1996-08-01 10:10:00') FROM jethro_item JOIN (SELECT A, 5, 'sss', SUM(B) AS TEMP_B_, SUM(CASE WHEN D = 0.01 THEN B ELSE 0 END), SUM(CASE WHEN B = 1 THEN D ELSE 0 END) FROM ahikam AS ahikam_outer_query WHERE (D IN (0.05,0.01,0.09) AND (NOT D = 1)) GROUP BY 1, 'sss' ORDER BY 1, 2, 3) AS T ON item.i_item_sk = A GROUP BY 5, 4, 1,2 ORDER BY i_brand LIMIT 7; +SELECT 'aaa', AA, 3, COUNT(A) FROM (SELECT A, 2, 'a', SUM(B) AS TEMP_B_, SUM(CASE WHEN D = 0.01 THEN B ELSE 0 END), SUM(CASE WHEN B = 1 THEN D ELSE 0 END) FROM ahikam AS ahikam_outer_query1 WHERE (D IN (0.05,0.01,0.09) AND (NOT D = 1)) GROUP BY 1, 'a', 2 ORDER BY 1, 2, 3) AS T1 LEFT OUTER JOIN (SELECT AA, SUM(BB) AS TEMP_B_, SUM(CASE WHEN DD = 0.01 THEN BB ELSE 0 END), SUM(CASE WHEN BB = 1 THEN DD ELSE 0 END) FROM ahikam2 AS ahikam_outer_query2 WHERE (DD IN (0.05,0.01,0.09) AND (NOT DD = 1)) GROUP BY 1 ORDER BY 1, 2, 3) AS T2 ON T1.A = T2.AA GROUP BY 1,'a',2 ORDER BY AA LIMIT 7; +select stddev_pop(8),8,stddev_samp(1),var_pop(2),var_samp(3),min(1),max(20) from ahikam group by 2; +select sum(8),8 from ahikam group by 2; +select sum(8),8 from ahikam where a = 1 group by 2; +select sum(8),8,count(1) from ahikam group by 2; +select sum(8),sum(a),avg(b),'aaa' from ahikam group by 'aaa'; +select sum(8),sum(a),avg(b),'aaa',8 from ahikam group by 'aaa',4; +select sum(8),sum(a),avg(b),'aaa',8, count(16) from (select a, b, c from ahikam group by 1,2,3 order by a,sum(8),sum(a), avg(b) limit 10)T group by 4; +select sum(8),sum(a),avg(b),'aaa',8, count(16) from (select a, b, c from ahikam where l2 = 5 group by 1,2,3 order by a limit 10)T group by 4; +SELECT SUM(8), SUM(a) as dima, AVG(b), 'aaa', 8, COUNT(16) FROM (SELECT a, b, c FROM ahikam WHERE l2 = 5 GROUP BY 1, 2, 3 ORDER BY a LIMIT 10) T LEFT JOIN (SELECT SUM(8), SUM(aa) as dima2, AVG(bb), 'aaa', 8, COUNT(16) FROM (SELECT aa, bb, cc FROM ahikam2 WHERE ll2 != 1 GROUP BY 1, 2, 3 ORDER BY aa LIMIT 10)T1)T2 on a=T2.dima2 GROUP BY 4; +SELECT VAR_POP(8), MIN(a) as dima, AVG(10), 'aaa', 8, COUNT(16) FROM (SELECT a, b, c FROM ahikam WHERE l2 = 5 GROUP BY 1, 2, 3 ORDER BY a LIMIT 10) T LEFT JOIN (SELECT SUM(8), STDDEV_POP(aa) as dima2, MAX(20), 'aaa', 8, STDDEV_SAMP(16), VAR_SAMP(1) FROM (SELECT aa, bb, cc FROM ahikam2 WHERE ll2 != 1 GROUP BY 1, 2, 3 ORDER BY aa LIMIT 10)T1)T2 on a=T2.dima2 GROUP BY 4; +SELECT T.a FROM( SELECT 2 as a, item.i_brand_id as b FROM jethro_item where (to_Bigint(item.i_brand_id) <> 1) ) T LIMIT 5; +drop view ahikam; +drop view ahikam2; +SELECT COUNT(*)+1 FROM (SELECT COUNT(*) FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T)T2; +SELECT COUNT(*), COUNT(*) FROM (SELECT ss_store_sk FROM store_sales) T; +SELECT COUNT(*) + COUNT(*) FROM (SELECT ss_store_sk FROM store_sales) T; +SELECT COUNT(*), COUNT(*) FROM (SELECT ss_store_sk, COUNT(*) FROM jethro_store_sales GROUP BY ss_store_sk) T; +SELECT COUNT(*) + COUNT(*) FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T; +SELECT COUNT(*) + 1 FROM (SELECT ss_store_sk, ss_item_sk FROM jethro_store_sales GROUP BY ss_store_sk, ss_item_sk) T; +SELECT 1,2,3, COUNT(*) FROM (SELECT COUNT(*) FROM (SELECT COUNT(*) FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T)T2)T3 GROUP BY 1,3,2; +SELECT COUNT(*) + 1 FROM (SELECT ss_store_sk+1, ss_item_sk/2 FROM jethro_store_sales GROUP BY ss_store_sk+1, ss_item_sk/2) T; +SELECT COUNT(*)+1 FROM (SELECT COUNT(*), 5 FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T GROUP BY 2)T2; +SELECT mastertbl.ss_customer_sk+1 AS ss_customer_sk, 16 AS LITERAL FROM jethro_store_sales MasterTbl JOIN customer ARR_TRADE_EXT ON mastertbl.ss_customer_sk = arr_trade_ext.c_customer_sk WHERE arr_trade_ext.c_birth_day NOT IN (SELECT 7 FROM customer TEMP WHERE TEMP.c_birth_day = TEMP.c_birth_day AND c_birth_day <= 6) group by 1 order by 1 limit 5; +SELECT mastertbl.ss_customer_sk+1 AS ss_customer_sk, 16 AS LITERAL FROM jethro_store_sales MasterTbl JOIN customer ARR_TRADE_EXT ON mastertbl.ss_customer_sk = arr_trade_ext.c_customer_sk WHERE arr_trade_ext.c_birth_day IN (SELECT 7 FROM customer TEMP WHERE TEMP.c_birth_day = TEMP.c_birth_day AND c_birth_day <= 6) group by 1 order by 1 limit 5; +SELECT ss_item_sk FROM jethro_store_sales WHERE 'exportischolar #2' IN (SELECT i_brand FROM jethro_item WHERE i_item_sk > 1) group by 1 order by 1 limit 10; +SELECT ss_item_sk FROM jethro_store_sales WHERE 'exportischolar #2' IN (SELECT i_brand FROM jethro_item WHERE i_item_sk = 1) AND ss_item_sk/2>15 group by 1 order by 1 limit 10; +SELECT ss_item_sk FROM jethro_store_sales WHERE 'exportischolar #2' NOT IN (SELECT i_brand FROM jethro_item WHERE i_item_sk = 2) group by 1 order by 1 desc limit 10; +SELECT ss_item_sk FROM jethro_store_sales WHERE cast ('1997-10-27 00:00:00' as timestamp) IN (SELECT i_rec_start_date FROM jethro_item WHERE i_item_sk = 1) AND ss_item_sk+1>300 group by 1 order by 1 limit 10; +select ss_addr_sk from jethro_store_sales where CAST (ss_addr_sk as bigint) iN (SELECT COUNT(*)+1 FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T) group by 1 order by 1 desc limit 10; +select ss_addr_sk from jethro_store_sales where CAST (ss_addr_sk as bigint) iN (SELECT COUNT(*) FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T) group by 1 order by 1 desc limit 10; +SELECT ss_addr_sk from jethro_store_sales where CAST (ss_addr_sk AS bigint) NOT IN (SELECT COUNT(*) FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T) limit 10; +select ss_addr_sk from jethro_store_sales where ss_addr_sk IN (SELECT CAST(COUNT(*)+1 AS INT) FROM (SELECT ss_store_sk FROM jethro_store_sales GROUP BY ss_store_sk) T) group by 1 order by 1 desc limit 10; +select ss_addr_sk from jethro_store_sales where ss_addr_sk IN (SELECT 8) group by 1 order by 1 desc limit 10; +select ss_addr_sk from jethro_store_sales where ss_addr_sk IN (SELECT 8) limit 10; +select i_rec_start_date, i_current_price from jethro_item where i_rec_start_date not IN (SELECT '1997-10-27') order by 1, 2 limit 10; +SELECT COUNT(DISTINCT date_dim.d_year) AS ctd_d_year_ok FROM (def_schema.store_sales AS jethro_store_sales INNER JOIN def_schema.date_dim AS date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk) HAVING COUNT (1) > 0; +SELECT cc_call_center_sk AS LEFT_TO_RIGHT_INT2LONG, cc_call_center_sk +1 AS RIGHT_TO_LEFT_INT2LONG, cc_gmt_offset AS LEFT_TO_RIGHT_FLOAT2DOUBLE, cc_tax_percentage AS RIGHT_TO_LEFT_FLOAT2DOUBLE FROM call_center UNION ALL SELECT cc_call_center_sk +5, cc_employees, cc_tax_percentage, cc_gmt_offset FROM call_center; +select cc_manager, count(cc_manager) from call_center group by cc_manager having count(distinct cc_call_center_sk) > 2; +select cc_manager, count(cc_manager) from call_center group by cc_manager having count(*) > 0 order by 1; +select T1.i_item_sk, T2.ss_item_sk from (select * from jethro_item ) T1 join (select * from store_sales) T2 on T1.i_item_sk = T2.ss_item_sk where T1.i_item_sk > 0 order by 1 desc,2 desc limit 10; +create view iot_blocked_dryer_dataset as select * from date_dim where trunc(D_DATE,'day') <= trunc(now(),'day'); +SELECT * FROM iot_blocked_dryer_dataset ORDER BY 1,2 LIMIT 10; +drop view iot_blocked_dryer_dataset; +SELECT count (*) from jethro_store_sales join jethro_item ON ss_item_sk+3147483647=i_item_sk OR ss_item_sk+3147483647 is null and i_item_sk is null; +SELECT count (*) from jethro_store_sales join jethro_item ON ss_item_sk+1=i_item_sk OR ss_item_sk+1 is null and i_item_sk is null; +select year(i_rec_start_date) from jethro_item where year(i_rec_start_date) not in (1999) group by 1 order by 1; +select * from (select * from cdr5)T limit 2; +desc cdr5; +select date, token, instr(token, '80038') from cdr5 where instr(token, '1580038')>10; +select token, locate('7123',token, 10) from cdr5 where locate('1067123', token, 10)>2; +select count(fudid) from cdr5; +select count(token) from cdr5 where loc=1 or loc=2; +select count(distinct(fudid)) from cdr5; +select count(fudid) from cdr5 where token is not null and server='sn130'; +select count(system) from cdr5 where server!='sn130' and loc=1; +select sum(system) from cdr5 where server='sn167' and fcc = 966; +select server, sum(fcc) from cdr5 group by server order by sum(fcc) limit 3; +select token,count(fudid), sum(fcc) from cdr5 where server='sn130' group by token order by count(fudid) asc, sum(fcc) desc, token desc limit 3; +select fcc, sum(tcc) from cdr5 where loc=0 and system='1' group by fcc order by sum(tcc) asc limit 3; +select media, sum(tcc) from cdr5 where loc=0 and fcc='1' group by media limit 3; +select token,server from cdr5 where loc=1 and system=3 and tcc=84; +select media, count(token) from cdr5 where loc=0 and system=3 group by media; +select fudid, count(token) from cdr5 where loc=0 and system=3 group by fudid order by count(token) desc limit 3; +select fudid,fcc, count(token) from cdr5 where loc=1 and system=3 group by fcc,fudid order by fcc desc, count(token) desc limit 5; +select fcc,system,count(media),sum(tcc), min(tcc), max(tcc) from cdr5 group by fcc, system order by fcc asc, system desc limit 3; +select token, max(system) from cdr5 group by token having max(system) > 10 order by token asc limit 10; +select fcc, fudid, tcc, avg(media) from cdr5 group by fcc, fudid, tcc having avg(media) = 5 order by fudid limit 5; +select token, max(loc) from cdr5 group by token having max(loc) > 10 limit 3; +select token, system , max(fcc), max(tcc) from cdr5 group by system, token having max(fcc) < 191 and max(tcc) < 99 order by token, max(fcc) desc limit 10; +select tcc, system, max(fcc), count(media) from cdr5 where system=3 group by tcc, system having max(fcc) < 998 and count(media) = 131 limit 10; +select date, token, media from cdr5 where server='sn130' and media is not null limit 10; +select datediff(date-1, date+1) from cdr5 limit 1; +select datediff(date-(60 * 60 * 24 *3), date+(60 * 60 * 24 *3)) from cdr5 limit 1; +select count(date) from cdr5 where date between '2013-01-31 03:39:07.318' and '2013-01-31 03:39:07.600' group by date order by date asc limit 1; +select count(*) , count(tcc), sum(tcc), (12+count(*))*3 from cdr5; +select count(*) , count(tcc), sum(tcc), (12+count(*))/12 from cdr5 where tcc>61 and tcc<64; +select MAX(unix_timestamp(date))-MIN(unix_timestamp(date)) from cdr5 limit 12; +SELECT v11.fcc, c,t FROM (SELECT fcc, count(*) c FROM cdr5 GROUP BY fcc) v11 JOIN (SELECT fcc, max(substr(token,1,2)) t FROM cdr5 GROUP BY fcc) v12 ON (v11.fcc = v12.fcc) WHERE v11.fcc <=39; +SELECT media, count(distinct fcc), count(distinct fcc+1), count(distinct token) ,count(distinct substr(token,1)) FROM cdr5 GROUP BY media ORDER BY media; +select count(distinct minute(date)) FROM cdr5; +select count(*) from cdr5 where fudid in (select fudid from cdr5 limit 5) having count(*) >=0; +SELECT token FROM cdr5 GROUP BY token Order BY count(*), token DESC LIMIT 10; +select count(*) from cdr5 where system>12 having count(*) > 0; +select token,(if (media=1, 'yes', 'no')) from cdr5 where loc<4 and media>0 limit 1; +select token, 12 from cdr5 order by token limit 4; +create table test(i int, s string, t timestamp); +select * from test; +select i from test where i>1; +select count(*), count(*)+1, avg(loc)-0.1, sum(fcc)*10, count(date)/count(server) from cdr5; +create table su(i int); +drop table su; +select count(*), count(distinct t), sum(distinct i) from test; +drop table test; +select distinct (case when media = 5 then 50 when media = 4 then fcc + 1 when media is not null then 0 else 10 end) from cdr5 order by (case when media = 5 then 50 when media = 4 then fcc + 1 when media is not null then 0 else 10 end); +select distinct (case when media = 5 then 50 else 10 end) from cdr5; +select sum((case when system between 1 and 7 then 12 else 50 end)) from cdr5; +select count(distinct (case when system between 1 and 7 then 'five' else 'other' end) )from cdr5; +select token, case when media=5 then 1 else 0 end from cdr5 group by (case when media=5 then 1 else 0 end), token order by token limit 10; +select distinct (case when media = 5 then 50 when media = 4 then fcc + 1 when media is not null then 0 else 10 end) from cdr5 where media is null or media in (4,5); +create view five as select case media when 5 then 'five' else 'not five' end from cdr5 limit 5; +select * from five; +desc five; +drop view five; +select * from (select * from sgk)T limit 3; +show tables; +describe sgk; +select * from sgk limit 2; +select count(country) from sgk; +select count(pageviews) from sgk where country=4 or refid=1390; +select avg(pageviews) from sgk where country=250 and visits=4; +select max(visits) from sgk; +select min(refid) from sgk; +select avg(country), count(country), max(country), min(country), sum(country) from sgk; +select avg(refid), count(refid), max(refid), min(refid), sum(refid) from sgk; +select avg(visits), count(visits), max(visits),min(visits),sum(visits) from sgk; +select avg(pageviews), count(pageviews), max(pageviews),min(pageviews),sum(pageviews) from sgk; +select count(site) from sgk where concat('yahoo','.','com')=site; +select country,site,(keywords) from sgk where length(site)>68 and length(keywords) between 1 and 8 and country>500; +select count(distinct(keywords)) from sgk; +select count(*) from sgk where country=250 and keywords is not null and site = 'youtube.com' and pageviews=1; +select site, country, sum(visits) from sgk group by site, country order by sum(visits) desc limit 3; +select site, sum(visits) from sgk where country=360 group by site order by sum(visits) desc limit 3; +select site, sum(visits) from sgk where keywords='google' group by site order by sum(visits) desc limit 3; +select site,country, sum(visits) from sgk where keywords='google' group by site, country order by sum(visits) desc limit 3; +select site,sum(visits), avg(pageviews) from sgk where keywords='google' and country=32 group by site order by avg(pageviews) desc, sum(visits) desc limit 3; +select site, min(visits) from sgk group by site having min(visits) < 0; +select site, min(visits) from sgk group by site having min(visits) = 0 order by site limit 4; +select country, site, max(onepage) from sgk group by country, site having max(onepage) > 1000 order by max(onepage) limit 5; +select keywords, onepage from sgk where country between 100 and 240 and keywords is not null and site='youtube.com' and onepage > 16 group by onepage, keywords order by onepage desc, keywords asc; +select sum(refid), site from sgk group by site order by sum(refid) desc, site asc limit 10; +select keywords, sum(visits), count(visits) from sgk where site='mystart.incredibar.com' and keywords is not null group by keywords order by sum(visits) desc, count(visits) desc, keywords limit 2; +select keywords, sum(visits) from sgk where site='uol.com.br' and keywords is null group by keywords order by sum(visits) desc; +select keywords, sum(visits) from sgk where site='walla.co.il' and keywords is not null group by keywords order by sum(visits) desc limit 1; +select count(site) from sgk where country >=800; +select count(site) from sgk where country >800; +select count(site) from sgk where country=800; +select count(site) from sgk where country between 900 and 933; +select refid, country, count(site) from sgk where country >10 and country < 12.01 and refid > 1.9 and refid < 20.3 group by refid, country; +select refid,timeonsite,onepage, count(site) from sgk where country between 11.99 and 12.01 and refid > 10.9 and timeonsite < 11.3 and timeonsite > 10 group by refid, timeonsite, onepage having count(site)>10; +select site, country from sgk where country between 0 and 4 and site between 'ze' and 'zhz' group by site, country order by site; +select site , country, onepage from sgk where onepage > 319781.8437500; +select site, country, visits from sgk where visits between 112.61 and 112.79 group by site, country, visits order by site desc; +select site , country, onepage from sgk where onepage between 319781.8437500 and 623438.6250000; +select site, country, pageviews from sgk where pageviews between 974012.7175710 and 3224523.6474303 group by pageviews, site, country order by pageviews desc limit 12; +select site, country, pageviews from sgk where country = 792 and pageviews > 178566.6067932 and pageviews <= 3224523.6474303 group by pageviews, country, site order by pageviews desc; +select site, country, timeonsite from sgk where timeonsite > 105385523.5842713 and timeonsite < 471371201.6136237; +select country, site from sgk where country >0 and country <= 24 and refid > 0.9 and refid < 1.3; +select keywords, onepage from sgk where country between 100 and 240 and keywords is not null and site='youtube.com' and onepage > 16 group by onepage, keywords order by onepage desc, keywords asc; +select country, count(country), refid from sgk where refid+7 < 12 group by country, refid; +select site,keywords, concat('12==',site,'==we ',keywords ) from sgk where keywords between 's' and 'sa' order by keywords desc limit 4; +select site,count(*) from sgk group by site having count(*) > 10000 order by count(*) desc; +select count(1) from sgk having count(*)>0; +select count(1+2) from sgk having count(*)<0; +select site, 5 from sgk group by site order by site asc limit 4; +select (case refid when 5 then -5 else refid end) as a from sgk group by a order by a desc limit 10; +select (case refid when 5 then -5 else refid end) as a from sgk group by a order by a asc limit 10; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left join oj2 on oj1.id = oj2.id left join oj3 on oj1.id = oj3.id and oj2.id = oj3.id order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v from oj1 join oj2 on oj1.id = oj2.id order by oj1.id desc, oj1.v, oj2.v desc; +select oj1.id, oj1.v, oj2.v from oj1 left outer join oj2 on oj1.id = oj2.id order by oj2.v, oj1.v, oj1.id; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 join oj2 on oj1.id = oj2.id join oj3 on oj2.id = oj3.id where oj1.id between 11 and 17 order by oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left join oj2 on oj1.id = oj2.id left join oj3 on oj1.id = oj3.id and oj2.id = oj3.id order by oj1.id, oj3.v desc, oj2.v asc, oj1.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 join oj2 on oj1.id = oj2.id left outer join oj3 on oj2.id = oj3.id where oj1.v like '%t1 k2%' order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 right join oj2 on oj1.id = oj2.id join oj3 on oj2.id = oj3.id order by oj3.v, oj2.v, oj1.v, oj1.id; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left outer join oj2 on oj1.id = oj2.id left outer join oj3 on oj2.id = oj3.id order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left outer join oj2 on oj1.id = oj2.id left outer join oj3 on oj1.id = oj3.id order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left join oj2 on oj1.id = oj2.id left join oj3 on oj1.id = oj3.id and oj2.id = oj3.id order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left outer join oj2 on oj1.id = oj2.id left outer join oj3 on oj1.id = oj3.id and oj2.id = oj3.id order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v, oj2.flag, oj3.flag from oj1 join oj2 on oj1.id = oj2.id left outer join oj3 on oj1.id = oj3.id and oj2.flag = oj3.flag order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v, oj2.flag, oj3.flag from oj1 join oj2 on oj1.id = oj2.id left outer join oj3 on oj1.id = oj3.id WHERE oj2.flag = oj3.flag order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v from oj1 left join oj2 on oj1.id = oj2.id left join oj3 on oj1.id = oj3.id and oj2.id = oj3.id order by oj1.id, oj1.v, oj2.v, oj3.v; +select oj1.id, oj1.v, oj2.v, oj3.v, oj2.flag, oj3.flag from oj1 join oj2 on oj1.id = oj2.id right join oj3 on oj1.id = oj3.id WHERE oj2.flag = oj3.flag and oj1.id < 15 order by oj1.id; +select oj3.v, oj2.v, oj1.v, oj1.id, oj2.flag, oj3.flag from oj1 right join oj2 on oj1.id = oj2.id right outer join oj3 on oj1.id = oj3.id and oj2.flag = oj3.flag order by oj3.v, oj2.v, oj1.v, oj1.id; +select oj2.v, oj3.v from oj1 left outer join oj2 on oj1.id = oj2.id right outer join oj3 on oj1.id = oj3.id group by oj3.v, oj2.v order by oj3.v desc, oj2.v desc; +select distinct(oj3.id) from oj3 join oj2 on oj2.id=oj3.id; +select oj2.v from oj2 join oj3 on oj3.flag=oj2.flag and oj2.id=oj3.id; +SELECT count(*) FROM t WHERE a=1 and (b=1 or c>0); +SELECT count(*) FROM t WHERE NOT (a=1 and (b=1 or c>0)); +SELECT count(*) FROM t WHERE NOT (a=1 and (b=1 or c is null)); +SELECT f.*,c.* FROM fruits f LEFT OUTER JOIN colors c ON f.color_id = c.color_id ORDER BY fruit_name; +SELECT f.*,c.* FROM fruits f LEFT OUTER JOIN colors c ON f.color_id = c.color_id AND color_name = 'yellow' ORDER BY fruit_name; +SELECT f.*,c.* FROM fruits f LEFT OUTER JOIN colors c ON f.color_id = c.color_id WHERE color_name = 'yellow' ORDER BY fruit_name; +SELECT f.*,c.* FROM fruits f LEFT OUTER JOIN colors c ON f.color_id = c.color_id WHERE fruit_name = 'banana' ORDER BY fruit_name; +SELECT f.*,c.* FROM fruits f INNER JOIN colors c ON f.color_id = c.color_id ORDER BY fruit_name; +SELECT f.*,c.* FROM fruits f INNER JOIN colors c ON f.color_id = c.color_id AND color_name = 'yellow' ORDER BY fruit_name; +SELECT f.*,c.* FROM fruits f INNER JOIN colors c ON f.color_id = c.color_id AND fruit_name = 'banana' ORDER BY fruit_name; +SELECT PRODUCT, SUM(PRICE), count(distinct(QLIK(products.price, 'TOTAL'))) FROM products WHERE YEAR=2012 GROUP BY PRODUCT order by PRODUCT; +SELECT PRODUCT, SUM(PRICE), SUM(PRICE)/SUM(QLIK(products.price,'TOTAL {}')) FROM products WHERE YEAR=2012 GROUP BY PRODUCT order by PRODUCT; +SELECT PRODUCT, SUM(PRICE) , SUM(QLIK(price,'{}')) FROM products WHERE YEAR=2012 GROUP BY PRODUCT order by PRODUCT; +SELECT YEAR, PRODUCT, SUM(PRICE), SUM(PRICE) / SUM(QLIK(price,'TOTAL ')) FROM products WHERE YEAR=2012 GROUP BY YEAR, PRODUCT order by PRODUCT; +SELECT PRODUCT, SUM(PRICE), count(distinct(QLIK(products.price, 'TOTAL'))) FROM products WHERE YEAR=2012 GROUP BY PRODUCT order by PRODUCT; +SELECT PRODUCT, SUM(PRICE), count(distinct(QLIK(products.product, 'TOTAL'))) FROM products GROUP BY PRODUCT order by PRODUCT; +SELECT PRODUCT, SUM(PRICE), count(QLIK(products.product, 'TOTAL')) FROM products GROUP BY PRODUCT order by PRODUCT; +select year, product, count(distinct price), count(distinct QLIK(products.price, 'TOTAL!')) from products group by year, product order by PRODUCT,year; +select count(distinct price), count(distinct QLIK(products.price, 'TOTAL!')) from products; +select year, product, count(distinct category), count(distinct QLIK(products.category, 'TOTAL!')) from products group by year, product order by PRODUCT,year; +select count(distinct category), count(distinct QLIK(products.category, 'TOTAL!')) from products; +select hexa from hexa_newdata where upper(number)>0; +SELECT C1, D.C2, C3 FROM (SELECT cast(sqrt(year(CURRENT_TIMESTAMP)) as INT) AS C1, sqrt(4) As C2, 14 as C3) as D; +SELECT C1, D.C2, C3 FROM (SELECT cast(sqrt(year(CURRENT_TIMESTAMP)) as INT) AS C1, sqrt(4) As C2, 14 as C3) as D where C3 = 14; +SELECT C1, D.C2, C3 FROM (SELECT CURRENT_TIMESTAMP AS C1, sqrt(4) As C2, 14 as C3) as D where C3 > 14; +select fruit_name, 0, 0 from fruits union all select color_name, 1, 3 from colors; +SELECT PRODUCT, SUM(PRICE), count(distinct(QLIK(T.price, 'TOTAL'))) FROM (select * from products) T WHERE YEAR=2012 GROUP BY PRODUCT order by PRODUCT; +SELECT PRODUCT, SUM(PRICE), count(distinct(QLIK(T.price, 'TOTAL'))) FROM (select * from products WHERE YEAR=2012)T GROUP BY PRODUCT order by PRODUCT; +SELECT 2147483648 union all (SELECT 1 union all select -3); +SELECT 2147483648 union all (SELECT color_id from colors union all SELECT color_id from fruits); +select * from date_timestamp where YEAR(date1) < '2017'; +select * from date_timestamp where YEAR(date1) > '2017'; +select * from date_timestamp where YEAR(date1) = '2017'; +select * from date_timestamp where YEAR(date1)+1 > '2017'; +select quarter(date1) from date_timestamp; +select * from date_timestamp where quarter(date9) < 2; +select * from date_timestamp where quarter(date9) > 2; +select * from date_timestamp where quarter(date9) = 1; +select * from date_timestamp where quarter(date9)+1 <= 4; +select * from date_timestamp where MONTH(date1) > '2' +select * from date_timestamp where MONTH(date1) = '2'; +select * from date_timestamp where MONTH(date1) < '2'; +select * from date_timestamp where MONTH(date1)+1 <= '2'; +select * from date_timestamp where MONTH(date1)+1 >= '2'; +select * from date_timestamp where WEEKOFYEAR(date5) = '1'; +select * from date_timestamp where WEEKOFYEAR(date5) >= '52'; +select * from date_timestamp where WEEKOFYEAR(date5) > '51'; +select * from date_timestamp where WEEKOFYEAR(date5) < '51'; +select * from date_timestamp where WEEKOFYEAR(date5)+2 <= '50'; +select * from date_timestamp where DAYOFMONTH(date1) = '10'; +select * from date_timestamp where DAYOFMONTH(date1) < '10'; +select * from date_timestamp where DAYOFMONTH(date1) > '10'; +select * from date_timestamp where DAYOFMONTH(date1) >= '10'; +select * from date_timestamp where DAYOFMONTH(date1)+ 1 <= '10'; +select * from date_timestamp where DAY(date1) = '15'; +select * from date_timestamp where DAY(date1) +2 <= '15'; +select * from date_timestamp where DAYOFWEEK(date1) > '1'; +select * from date_timestamp where DAYOFWEEK(date1) >= '1'; +select * from date_timestamp where DAYOFWEEK(date1) <= '1'; +select * from date_timestamp where DAYOFWEEK(date1)+1 = '4'; +select * from date_timestamp where HOUR(date5) = '15'; +select * from date_timestamp where HOUR(date5) > '15'; +select * from date_timestamp where HOUR(date5) < '15'; +select * from date_timestamp where HOUR(date5) >= '15'; +select * from date_timestamp where HOUR(date5)+1 = '15'; +select * from date_timestamp where MINUTE(date5) = '15'; +select * from date_timestamp where MINUTE(date5) > '15'; +select * from date_timestamp where MINUTE(date5) <= '15'; +select * from date_timestamp where MINUTE(date5)+1 <= '15'; +select * from date_timestamp where SECOND(date5) = '15'; +select * from date_timestamp where SECOND(date5) > '15'; +select * from date_timestamp where SECOND(date5) < '15'; +select * from date_timestamp where SECOND(date5) <= '15'; +select * from date_timestamp where SECOND(date5) +1 >= '15'; +select * from date_timestamp where microsecond(date5) > 150; +select * from date_timestamp where microsecond(date5) < 150; +select * from date_timestamp where microsecond(date6) <= 123000; +select * from date_timestamp where microsecond(date6) >= 123000; +select * from date_timestamp where microsecond(date6)+1 = 123001; +select * from date_timestamp where datediff(date1,date2) > 1; +select * from date_timestamp where datediff(date1,date2) < 1; +select * from date_timestamp where datediff(date1,date2) = 7; +select * from date_timestamp where datediff(date1,date2)+1 >= 7; +select date_add(date1,2) from date_timestamp; +select date_add(date5,2)+60 from date_timestamp; +select * from date_timestamp where date_add(date5,2) = '2017-10-17 15:15:15.100'; +select * from date_timestamp where date_add(date5,2) < '2017-10-17 15:15:15.100'; +select * from date_timestamp where date_add(date5,2) > '2017-10-17 15:15:15.100'; +select * from date_timestamp where date_add(date5,2) >= '2017-10-17 15:15:15.100'; +select * from date_timestamp where date_add(date5,2)+1 = '2017-10-17 15:15:16.100'; +select date_sub(date1, 2) from date_timestamp; +select timestampadd(year,3, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(year,3, date1) < '2117-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(year,3, date1)+5 <= '2020-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(year,3, date1) > '2020-10-14 00:00:00.000'; +select date1 from date_timestamp where timestampadd(year,3, date1) = '2020-10-15 00:00:00.000'; +select timestampadd(quarter,4, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(quarter,4, date1) > '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(quarter,4, date1) < '2018-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(quarter,4, date1) <> '2018-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(quarter,4, date1) = '2018-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(quarter,4, date1)+5 = '2018-10-15 00:00:05.000'; +select date1 from date_timestamp where timestampadd(quarter,4, date1)+5 >= '2018-10-15 00:00:04.000'; +select timestampadd(month,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(month,4, date1) > '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(month,4, date1) < '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(month,4, date1) = '2018-02-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(month,4, date1)+10 <= '2018-02-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(month,4, date1)+10 >= '2018-02-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(month,4, date1)+10 <> '2018-02-15 00:00:00.000'; +select timestampadd(week,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(week,5, date1) > '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(week,5, date1) < '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(week,5, date1) = '2017-11-14 00:00:00.000'; +select date1 from date_timestamp where timestampadd(week,5, date1)+10 <= '2017-11-14 00:00:00.000'; +select date1 from date_timestamp where timestampadd(week,5, date1)+10 >= '2017-11-14 00:00:00.000'; +select date1 from date_timestamp where timestampadd(week,5, date1)+10 <> '2017-11-14 00:00:00.000'; +select timestampadd(day,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(day,5, date1) > '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(day,5, date1) < '2017-10-15 00:00:00.000'; +select date1 from date_timestamp where timestampadd(day,5, date1) = '2017-10-20 00:00:00.000'; +select date1 from date_timestamp where timestampadd(day,5, date1)+10 <= '2017-10-20 00:00:00.000'; +select date1 from date_timestamp where timestampadd(day,5, date1)+10 >= '2017-10-10 00:00:00.000'; +select date1 from date_timestamp where timestampadd(day,5, date1)+10 <> '2017-02-27 00:00:10.000'; +select timestampadd(hour,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(hour,5, date1) > '1400-10-10 05:00:00.000'; +select date1 from date_timestamp where timestampadd(hour,5, date1) < '1400-10-10 05:00:00.000'; +select date1 from date_timestamp where timestampadd(hour,5, date1) = '1400-10-10 05:00:00.000';; +select date1 from date_timestamp where timestampadd(hour,5, date1)+10 <= '1400-10-10 05:00:00.000'; +select date1 from date_timestamp where timestampadd(hour,5, date1)+10 >= '1400-10-10 05:00:00.000'; +select date1 from date_timestamp where timestampadd(hour,5, date1)+10 <> '1400-10-10 05:00:10.000'; +select timestampadd(MINUTE,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(MINUTE,5, date1) > '2017-10-15 00:05:00.000'; +select date1 from date_timestamp where timestampadd(MINUTE,5, date1) < '2017-10-15 00:05:00.000'; +select date1 from date_timestamp where timestampadd(MINUTE,5, date1) = '2017-10-15 00:05:00.000'; +select date1 from date_timestamp where timestampadd(MINUTE,5, date1) + 10 <= '2017-10-15 00:05:00.000'; +select date1 from date_timestamp where timestampadd(MINUTE,5, date1) + 10 >= '2017-10-15 00:05:00.000'; +select date1 from date_timestamp where timestampadd(MINUTE,5, date1) + 10 <> '2017-10-15 00:05:10.000'; +select timestampadd(second ,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(second ,5, date1) > '2017-02-15 00:00:05.000'; +select date1 from date_timestamp where timestampadd(second ,5, date1) < '2017-02-15 00:00:05.000'; +select date1 from date_timestamp where timestampadd(second ,5, date1) = '2017-02-15 00:00:05.000'; +select date1 from date_timestamp where timestampadd(second ,5, date1) +10 <= '2017-02-15 00:00:05.000'; +select date1 from date_timestamp where timestampadd(second ,5, date1) +10 >= '2017-02-15 00:00:05.000'; +select date1 from date_timestamp where timestampadd(second ,5, date1) +10 <> '2017-02-15 00:00:15.000'; +select timestampadd(microsecond,5, date1) from date_timestamp; +select date1 from date_timestamp where timestampadd(microsecond ,5, date1) > '2017-02-15 00:00:00.000005'; +select date1 from date_timestamp where timestampadd(microsecond ,5, date1) < '2017-02-15 00:00:00.000005' +select date1 from date_timestamp where timestampadd(microsecond ,5, date1) = '2017-02-15 00:00:00.000005'; +select date1 from date_timestamp where timestampadd(microsecond ,5, date1) + 10 <= '2017-02-15 00:00:10.000005'; +select date1 from date_timestamp where timestampadd(microsecond ,5, date1) + 10 >= '2017-02-15 00:00:10.000005'; +select date1 from date_timestamp where timestampadd(microsecond ,5, date1) + 10 <> '2017-02-15 00:00:10.000005'; +select timestampadd(frac_second,5, date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(frac_second ,5, date7) > '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(frac_second ,5, date7) < '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(frac_second ,5, date7) = '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(frac_second ,5, date7)+10 <= '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(frac_second ,5, date7)+10 <= '2017-10-15 15:15:35.123456'; +select date7 from date_timestamp where timestampadd(frac_second ,5, date7)+10 <> '2017-10-15 15:15:25.123456'; +select timestampadd(SQL_TSI_YEAR,1,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_YEAR,1,date7) > '2018-10-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_YEAR,1,date7) < '2018-10-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_YEAR,1,date7) = '2018-10-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_YEAR,1,date7)+10 <= '2018-10-10 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_YEAR,1,date7)+10 >= '2018-10-10 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_YEAR,1,date7)+10 <> '2018-10-10 15:15:25.123456'; +select timestampadd(SQL_TSI_QUARTER,4,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_QUARTER,4,date7) > '2018-10-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_QUARTER,4,date7) < '2018-10-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_QUARTER,4,date7) = '2018-10-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_QUARTER,4,date7)+10 <= '2018-10-10 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_QUARTER,4,date7)+10 >= '2018-10-10 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_QUARTER,4,date7)+10 <> '2018-10-10 15:15:25.123456'; +select timestampadd(SQL_TSI_MONTH,4,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_MONTH,4,date7) > '2018-02-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MONTH,4,date7) < '2018-02-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MONTH,4,date7) = '2018-02-10 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MONTH,4,date7)+10 <= '2018-02-10 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MONTH,4,date7)+10 >= '2018-02-10 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MONTH,4,date7)+10 <> '2018-02-10 15:15:25.123456'; +select timestampadd(SQL_TSI_WEEK,4,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_WEEK,4,date7) > '2017-11-12 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_WEEK,4,date7) < '2017-11-12 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_WEEK,4,date7) = '2017-11-12 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_WEEK,4,date7)+10 <= '2017-11-12 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_WEEK,4,date7)+10 >= '2017-11-12 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_WEEK,4,date7)+10 <> '2017-11-12 15:15:25.123456'; +select timestampadd(SQL_TSI_DAY,5,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_DAY,5,date7) > '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_DAY,5,date7) < '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_DAY,5,date7) = '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_DAY,5,date7)+10 >= '2017-10-15 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_DAY,5,date7)+10 <= '2017-10-15 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_DAY,5,date7)+10 <> '2017-10-15 15:15:25.123456'; +select timestampadd(SQL_TSI_HOUR,5,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_HOUR,5,date7) > '2017-10-15 20:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_HOUR,5,date7) < '2017-10-15 20:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_HOUR,5,date7) = '2017-10-15 20:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_HOUR,5,date7)+10 >= '2017-10-15 20:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_HOUR,5,date7)+10 <= '2017-10-15 20:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_HOUR,5,date7)+10 <> '2017-10-15 20:15:25.123456'; +select timestampadd(SQL_TSI_MINUTE,5,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_MINUTE,5,date7) > '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MINUTE,5,date7) < '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MINUTE,5,date7) = '2017-10-15 15:20:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MINUTE,5,date7)+10 >= '2017-10-15 15:20:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MINUTE,5,date7)+10 <= '2017-10-15 15:20:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_MINUTE,5,date7)+10 <> '2017-10-15 15:20:25.123456'; +select timestampadd(SQL_TSI_SECOND,5,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_SECOND,5,date7) > '2017-10-15 15:15:20.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_SECOND,5,date7) < '2017-10-15 15:15:20.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_SECOND,5,date7) = '2017-10-15 15:15:20.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_SECOND,5,date7)+10 >= '2017-10-15 15:15:30.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_SECOND,5,date7)+10 <= '2017-10-15 15:15:30.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_SECOND,5,date7)+10 <> '2017-10-15 15:15:30.123456'; +select timestampadd(SQL_TSI_FRAC_SECOND,5,date7) from date_timestamp; +select date7 from date_timestamp where timestampadd(SQL_TSI_FRAC_SECOND,5,date7) > '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_FRAC_SECOND,5,date7) < '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_FRAC_SECOND,5,date7) = '2017-10-15 15:15:15.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_FRAC_SECOND,5,date7)+10 >= '2017-10-15 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_FRAC_SECOND,5,date7)+10 <= '2017-10-15 15:15:25.123456'; +select date7 from date_timestamp where timestampadd(SQL_TSI_FRAC_SECOND,5,date7)+10 <> '2017-10-15 15:15:25.123456'; +select timestampdiff(year, date7, date1) from date_timestamp; +select timestampdiff(quarter, date7, date1) from date_timestamp; +select timestampdiff(MONTH, date7, date1) from date_timestamp; +select timestampdiff(week, date7, date1) from date_timestamp; +select timestampdiff(day, date7, date1) from date_timestamp; +select timestampdiff(hour, date7, date1) from date_timestamp; +select timestampdiff(minute, date7, date1) from date_timestamp; +select timestampdiff(second, date7, date1) from date_timestamp; +select timestampdiff(microsecond, date7, date1) from date_timestamp; +select timestampdiff(frac_second, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_YEAR, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_QUARTER, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_MONTH, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_WEEK, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_DAY, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_HOUR, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_MINUTE, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_SECOND, date7, date1) from date_timestamp; +select timestampdiff(SQL_TSI_FRAC_SECOND, date7, date1) from date_timestamp; +select trunc(date7, 'year') from date_timestamp; +select trunc(date7, 'quarter') from date_timestamp; +select trunc(date7, 'month') from date_timestamp; +select trunc(date7, 'week') from date_timestamp; +select trunc(date7, 'day') from date_timestamp; +select trunc(date7, 'hour') from date_timestamp; +select trunc(date7, 'minute') from date_timestamp; +select trunc(date7, 'second') from date_timestamp; +select date1, cast(to_timestamp('2016-10-11 236:199') as string) from date_timestamp; +select unix_timestamp('2037-10-10 00:00:00.000'); +select date_sub(date1, 2000000) from date_timestamp; +show table partitions date_timestamp_partition; +show table partitions date_timestamp_partition_by_day; +show table partitions date_timestamp_partition_by_month; +select unix_timestamp('1400-01-01 00:00:00.000'); +select unix_timestamp('1986-10-01 19:30:00.000'); +select unix_timestamp('7400-01-01 10:00:20.000'); +select unix_timestamp('9999-12-31 00:00:00.000'); +select unix_timestamp('10001-12-31 00:00:00.000'); +select unix_timestamp('700-12-31 00:00:00.000'); +show table partitions partition_by_string; +alter table partition_by_string drop partition for (between '2013-07-13' AND '2015-06-14'); +alter table partition_by_string drop partition for (between '1999-02-03' AND '2011-08-12'); +insert overwrite partition_by_string select * from ext_partition_by_string; +show table partitions partition_by_int; +alter table partition_by_int drop partition for (2); +alter table partition_by_int drop partition for (8); +insert overwrite partition_by_int select * from ext_partition_by_int; +show table partitions partition_by_timestamp; +alter table partition_by_timestamp drop partition for ('1999-05-15 22:00:00'); +alter table partition_by_timestamp drop partition for (between '2015-04-13 23:50:00' AND '2015-04-14 05:00:00'); +alter table partition_by_timestamp drop partition for (between '3578-01-31 20:00:00' AND '3578-01-31 23:00:00'); +insert overwrite partition_by_timestamp select * from ext_partition_by_timestamp; +select * from (select * from sales_demo)T limit 2; +show tables; +ALTER TABLE sales_demo RENAME TO sd; +ALTER TABLE sd RENAME TO sales_demo; +create view sales1 as SELECT item_product_name FROM sales_demo GROUP BY item_product_name ORDER BY count(*) DESC, item_product_name DESC LIMIT 9; +SELECT item_category, item_class, item_product_name, count(DISTINCT store_sk), count(DISTINCT customer_sk) FROM sales_demo WHERE item_product_name in (SELECT * FROM sales1) GROUP BY item_category, item_class, item_product_name ORDER BY item_category, item_class, item_product_name limit 10; +create view sales2 as SELECT item_category, item_class, item_product_name, count(DISTINCT store_sk) count_store_sk, count(DISTINCT customer_sk) count_customer_sk FROM sales_demo WHERE item_product_name in (SELECT * FROM sales1) GROUP BY item_category, item_class, item_product_name ORDER BY item_category, item_class, item_product_name; +SELECT count(*) FROM sales_demo; +SELECT count(DISTINCT item_category) FROM sales_demo; +SELECT DISTINCT item_category FROM sales_demo order by item_category; +SELECT count(*) FROM sales_demo WHERE item_category IS NULL; +SELECT count(DISTINCT item_class) FROM sales_demo; +SELECT item_class, count(*) FROM sales_demo GROUP BY item_class ORDER BY count(*) DESC LIMIT 10; +SELECT item_class,count(*) FROM sales_demo WHERE item_category = 'Books' GROUP BY item_class ORDER BY count(*) DESC; +SELECT store_state,count(*) FROM sales_demo WHERE item_category = 'Books' AND item_class = 'computers' GROUP BY store_state ORDER BY count(*) DESC; +SELECT year(sale_date), count(*) FROM sales_demo WHERE item_category = 'Books' AND item_class = 'computers' AND store_state = 'NY' GROUP BY year(sale_date) ORDER BY year(sale_date); +SELECT SUM(1) AS sum_Number_of_Records_ok FROM def_schema.sales_demo AS sales_demo WHERE (sales_demo.customer_education_status IN ('2 yr Degree', '4 yr Degree') AND sales_demo.item_category = 'Electronics') HAVING COUNT(1) > 0; +create view sales_q as SELECT * FROM sales_demo WHERE item_class IN ('archery', 'arts', 'audio', 'automotive', 'baseball', 'basketball', 'bedding', 'business'); +select count(*) from sales_q; +drop view sales1; +create view sales1 as SELECT item_product_name FROM sales_demo GROUP BY item_product_name ORDER BY count(*) DESC, item_product_name DESC; +SELECT item_category, item_class, item_product_name, count(DISTINCT store_sk), count(DISTINCT customer_sk) FROM sales_demo WHERE item_product_name in (SELECT * FROM sales1) GROUP BY item_category, item_class, item_product_name ORDER BY item_category DESC, item_class DESC, item_product_name DESC LIMIT 5; +SELECT item_product_name, count(DISTINCT store_sk), count(DISTINCT customer_sk) FROM sales_q WHERE item_product_name in (SELECT * FROM sales1) GROUP BY item_product_name ORDER BY count(DISTINCT customer_sk) desc,count(DISTINCT store_sk) desc, item_product_name LIMIT 12; +alter table sales_demo drop partition for ('2000-09-01 00:00:00'); +select count(*) from sales_demo where sale_date >= '2000-09-01 00:00:00' and sale_date < '2000-10-01 00:00:00'; +alter table sales_demo drop partition for ('1998-01-01 00:00:00'); +select count(customer_sk) from sales_demo; +alter table sales_demo drop partition for ('2003-01-01 00:00:00'); +select count(store_sk) from sales_demo; +SELECT item_class, count(*) FROM sales_demo where item_category = 'Sports' GROUP BY item_class ORDER BY count(*) ASC; +SELECT year(sale_date), count(*) FROM sales_demo WHERE item_category = 'Books' AND item_class = 'computers' AND store_state = 'NY' GROUP BY year(sale_date) ORDER BY year(sale_date) DESC, year(sale_date); +create table too(pendo STRING); +select count(*) from sales2; +create view test (year_sale_date, coutn_co) as SELECT year(sale_date), count(*) FROM sales_demo WHERE item_category = 'Books' AND item_class = 'computers' AND store_state = 'NY' GROUP BY year(sale_date) ORDER BY year(sale_date) limit 3; +create view test2 as select distinct customer_salutation from sales_demo where customer_salutation='Mrs.'; +select count(*) from sales_demo where customer_salutation in (select * from test2) or customer_salutation='Miss'; +create view test3 as select customer_salutation, count(*) c from sales_demo group by customer_salutation; +create view test4 as select customer_salutation, sum(quantity) m from sales_demo group by customer_salutation; +select * from test3 v1 join test4 v2 on (v1.customer_salutation=v2.customer_salutation) order by v1.customer_salutation desc; +select * from sales_demo where sale_date >= '2002-05-25' and sale_date <= '2002-01-01'; +select count(*) from sales_demo where sale_date between '2001-01-01' and '2000-05-12'; +select round(net_profit) from sales_demo where customer_sk = 1268284; +select sign(net_profit) from sales_demo where customer_sk = 1268284; +select sqrt(net_profit) from sales_demo where customer_sk = 1268284; +select customer_sk, concat ('ahikam', space(3), 'finkel') from sales_demo where customer_sk = 1268284; +select customer_sk, ascii('A') from sales_demo where customer_sk = 1268284; +select tan(net_profit) from sales_demo where customer_sk = 1268284; +select cot(net_profit) from sales_demo where customer_sk = 1268284; +select atan(net_profit) from sales_demo where customer_sk = 1268284; +select sin(net_profit) from sales_demo where customer_sk = 1268284; +select asin(net_profit) from sales_demo where customer_sk = 1268284; +select cos(net_profit) from sales_demo where customer_sk = 1268284; +select acos(net_profit) from sales_demo where customer_sk = 1268284; +select degrees(net_profit) from sales_demo where customer_sk = 1268284; +select radians(net_profit) from sales_demo where customer_sk = 1268284; +select customer_sk, pi() from sales_demo where customer_sk = 1268284; +select exp(net_profit) from sales_demo where customer_sk = 1268284; +select ln(net_profit) from sales_demo where customer_sk = 1268284; +select customer_sk, log(100) from sales_demo where customer_sk = 1268284; +select customer_first_name, replace(item_product_name, 'e', '010') from sales_demo where customer_sk = 1268284; +SELECT item_category, item_product_name, COUNT(DISTINCT (CASE customer_sk WHEN 10 THEN NULL WHEN 20 THEN customer_sk ELSE NULL END)) FROM sales_demo WHERE item_category <> 'Women' GROUP BY item_category, item_product_name ORDER BY item_category DESC, item_product_name LIMIT 15; +SELECT item_category, item_product_name, ROUND(COUNT(DISTINCT (CASE customer_sk WHEN 10 THEN NULL WHEN 1281 THEN customer_birth_year-1603 ELSE NULL END)))+3 FROM sales_demo WHERE item_category <> 'Women' GROUP BY item_category, item_product_name ORDER BY item_category DESC, item_product_name LIMIT 15; +SELECT item_category, item_product_name, COUNT(DISTINCT (CASE WHEN customer_sk IN (1, 2, 3) THEN NULL WHEN customer_birth_year = 1924 THEN store_sk ELSE NULL END)) FROM sales_demo WHERE item_category <> 'Women' GROUP BY item_category, item_product_name ORDER BY item_category DESC, item_product_name LIMIT 15; +SELECT item_category, item_product_name, COUNT(DISTINCT (CASE WHEN customer_sk IN (4, 1358, 6) THEN store_sk WHEN customer_birth_year = 1928 THEN NULL ELSE NULL END)) FROM sales_demo WHERE item_category <> 'Women' AND item_category <> 'Sports' GROUP BY item_category, item_product_name ORDER BY item_category DESC, item_product_name LIMIT 15; +SELECT customer_sk, COUNT(DISTINCT CASE WHEN (((customer_sk > 0 AND customer_birth_year > 1) AND item_product_name <> 'X') OR item_category = '5') THEN store_sk WHEN (NOT customer_sk = 0 AND customer_birth_year <> 1) THEN NULL ELSE NULL END) FROM sales_demo GROUP BY customer_sk limit 5; +select sale_date, timestampadd(millisecond,1000,sale_date) from sales_demo limit 10; +select sale_date, timestampdiff(millisecond,'2013-06-03 11:04:47.424', '2013-06-03 11:04:47.426') from sales_demo limit 10; +select sale_date, timestampdiff(millisecond, sale_date , sale_date) from sales_demo limit 10; +SELECT STORE_NAME FROM SALES_DEMO WHERE CASE WHEN STORE_CITY IN ('Bethel', 'Centerville') THEN 'Y' ELSE STORE_CITY END ='Y' order by store_name limit 20; +SELECT customer_last_name, SUM(CASE WHEN quantity IN (79,37,14,55,5,72,91) AND list_price IN (79,37,14,55,5,72,91,7,8,9,10,11) THEN quantity END) AS AA FROM sales_demo WHERE quantity IN (SELECT quantity FROM sales_demo) GROUP BY customer_last_name HAVING SUM(quantity) > 1 limit 20; +truncate table sales_demo; +DESC sales_demo; +drop table sales_demo; +show tables extended; +show views extended; +drop view sales1; +drop view sales2; +drop view sales_q; +show views in def_schema; +select * from (select * from customer)T limit 2; +select * from (select * from supplier)T limit 2; +select * from (select * from lineitem)T limit 2; +show tables; +SELECT customer.c_mktsegment AS c_mktsegment FROM def_schema.customer AS customer GROUP BY customer.c_mktsegment ORDER BY customer.c_mktsegment ASC; +SELECT orders.o_orderkey AS o_orderkey FROM ((def_schema.lineitem AS lineitem INNER JOIN def_schema.orders AS orders ON lineitem.l_orderkey = orders.o_orderkey ) INNER JOIN def_schema.customer AS customer ON orders.o_custkey = customer.c_custkey ) WHERE (((CASE WHEN lineitem.l_shipdate > '1995-03-15 00:00:00' THEN 1 WHEN (NOT lineitem.l_shipdate > '1995-03-15 00:00:00') THEN 0 ELSE NULL END != 0 AND CASE WHEN orders.o_orderdate < '1995-03-15 00:00:00' THEN 1 WHEN (NOT orders.o_orderdate < '1995-03-15 00:00:00') THEN 0 ELSE NULL END != 0) AND customer.c_mktsegment = 'BUILDING') AND orders.o_orderkey IS NULL) LIMIT 1; +SELECT region.r_name AS r_name FROM def_schema.region AS region GROUP BY region.r_name ORDER BY region.r_name ASC; +SELECT MIN(lineitem.l_discount) AS TEMP_none_l_discount_qk_lower__CJAHBEIBE__A_, MAX(lineitem.l_discount) AS TEMP_none_l_discount_qk_upper__CJAHBEIBE__A_ FROM def_schema.lineitem AS lineitem HAVING COUNT(1) > 0; +SELECT MIN(l_quantity) AS TEMP_none_l_quantity_qk_lower__CJAHBEIBE__A_, MAX(l_quantity) AS TEMP_none_l_quantity_qk_upper__CJAHBEIBE__A_ FROM lineitem AS lineitem HAVING COUNT(1) > 0; +SELECT part.p_type AS p_type FROM def_schema.part AS part GROUP BY part.p_type ORDER BY part.p_type ASC; +SELECT COUNT(*) FROM supplier cross join customer where s_nationkey = 15 and c_nationkey = 15; +SELECT s_name FROM supplier CROSS JOIN customer LIMIT 2; +SELECT COUNT(*) FROM SUPPLIER CROSS JOIN PARTSUPP; +SELECT lineitem.l_suppkey AS l_suppkey, supplier.s_address AS s_address, supplier.s_name AS s_name, supplier.s_phone AS s_phone, SUM((lineitem.l_extendedprice * (1 - lineitem.l_discount))) AS sum_Calculation_HAGAHBBAIFCFGEJF_ok FROM (((def_schema.lineitem AS lineitem INNER JOIN def_schema.supplier AS supplier ON lineitem.l_suppkey = supplier.s_suppkey) INNER JOIN (SELECT SUM((lineitem.l_extendedprice * (1 - lineitem.l_discount))) AS X_measure__A, lineitem.l_suppkey AS l_suppkey FROM def_schema.lineitem AS lineitem WHERE (lineitem.l_shipdate >= '1996-01-01 00:00:00' AND lineitem.l_shipdate < '1996-04-01 00:00:00') GROUP BY lineitem.l_suppkey) AS t0 ON (lineitem.l_suppkey = t0.l_suppkey)) CROSS JOIN (SELECT MAX(t1.X_measure__B) AS X_measure__C FROM (SELECT SUM((lineitem.l_extendedprice * (1 - lineitem.l_discount))) AS X_measure__B, lineitem.l_suppkey AS l_suppkey FROM def_schema.lineitem AS lineitem WHERE (lineitem.l_shipdate >= '1996-01-01 00:00:00' AND lineitem.l_shipdate < '1996-04-01 00:00:00') GROUP BY lineitem.l_suppkey) AS t1 HAVING COUNT(1) > 0) AS t2) WHERE ((lineitem.l_shipdate >= '1996-01-01 00:00:00' AND lineitem.l_shipdate < '1996-04-01 00:00:00') AND CASE WHEN t0.X_measure__A = t2.X_measure__C THEN 1 WHEN (NOT t0.X_measure__A = t2.X_measure__C) THEN 0 ELSE NULL END != 0) GROUP BY lineitem.l_suppkey, supplier.s_address, supplier.s_name, supplier.s_phone; +SELECT p_type AS p_type FROM part AS part GROUP BY p_type ORDER BY p_type ASC limit 10 offset 10; +select c_custkey, c_name, c_address from customer order by c_name desc limit 10 offset 100; +select c_custkey, c_name, c_address from customer order by c_name limit 11 offset 100; +select c_custkey, c_name, c_address from customer limit 10; +select c_custkey, c_name, c_address from customer limit 10 offset 0; +select c_custkey, c_name, c_address from customer order by c_name ASC, c_custkey DESC limit 10 offset 100; +select s_address, s_comment from supplier order by s_address DESC, s_comment ASC limit 10 offset 4; +select p_name, p_retailprice from part where p_retailprice > 915 order by p_retailprice, p_name limit 10 offset 0; +select ps_suppkey,p_comment,ps_supplycost from part inner join partsupp on ps_partkey = p_partkey where ps_suppkey > 2500 order by ps_supplycost, ps_suppkey limit 15 offset 1111; +select p_name, p_retailprice, ps_partkey from part join partsupp on ps_partkey = p_partkey where p_retailprice > 915 order by p_retailprice, 1, 3 limit 10 offset 0; +select ps_suppkey,p_comment,ps_supplycost from part inner join partsupp on ps_partkey = p_partkey where ps_suppkey > 2500 order by ps_supplycost,ps_suppkey limit 15 offset 100; +select ps_suppkey,p_comment,ps_supplycost from part left join partsupp on ps_partkey = p_partkey where ps_suppkey > 2500 order by ps_supplycost,ps_suppkey limit 15 offset 1111; +select s_suppkey,s_name,c_custkey, c_name from supplier cross join customer where s_nationkey = 15 and c_nationkey = 15 order by s_suppkey, c_name limit 14 offset 1112; +select r_name,c_name from customer cross join (select r_name from region where r_regionkey = 3) t2 order by c_custkey limit 20 offset 112; +select DISTINCT c_custkey, c_name, c_address from customer order by c_name limit 10 offset 15; +select count(*), c_custkey, c_name from customer group by c_name,c_custkey order by c_name limit 10 offset 99; +select case when c_custkey <=1 then NULL when c_custkey < 4 then c_custkey end, case when c_custkey <=1 then NULL when c_custkey < 4 then c_custkey else NULL end as COLUMN_1, case when c_custkey <=1 then NULL when c_custkey < 4 then c_custkey else c_acctbal end as COLUMN_2, case when c_custkey <=1 then NULL when c_custkey < 4 then c_acctbal else c_custkey end as COLUMN_3, case when c_custkey <=1 then c_custkey when c_custkey < 4 then c_acctbal else c_custkey end as COLUMN_4, case when c_custkey <=1 then c_acctbal when c_custkey < 4 then cast(c_acctbal as float) else c_custkey end as COLUMN_5, case when c_custkey <=1 then cast(c_acctbal as float) when c_custkey < 4 then cast (c_custkey as bigint) else c_acctbal end as COLUMN_6, case when c_custkey <=1 then cast(c_acctbal as float) when c_custkey < 4 then NULL else cast (c_custkey as bigint) end as COLUMN_7, case when c_custkey <=1 then NULL when c_custkey < 4 then cast (c_custkey as bigint) else cast(c_acctbal as float) end as COLUMN_8, case when c_custkey <=1 then cast (c_custkey as bigint) when c_custkey < 4 then cast(c_acctbal as float) end as COLUMN_9 from customer limit 7; +select case when c_custkey <=1 then NULL end as COL from customer limit 10; +select case when c_custkey < 4 then c_custkey end as COL from customer limit 10; +SELECT o_orderstatus AS ORDER_STATUS, o_orderkey AS ORDER_KEY, o_custkey AS CUSTOMER_KEY, o_orderdate AS ORDER_DATE, o_shippriority AS SHIP_PRIORITY, o_totalprice AS TOTAL_PRICE FROM orders AS a join (SELECT MAX(o_orderdate) AS latest FROM orders WHERE o_orderstatus = 'O' AND o_orderkey > 100 ) AS b ON a.o_orderdate = b.latest order by 2, 3, ORDER_DATE, 5, 1 limit 05; +SELECT a.o_orderstatus AS ORDER_STATUS, sum(a.o_orderkey) AS ORDER_KEY, a.o_custkey AS CUSTOMER_KEY, a.o_orderdate AS ORDER_DATE, a.o_shippriority AS SHIP_PRIORITY, c.c_name AS CUSTOMER_NAME, b.latest, o_totalprice AS TOTAL_PRICE FROM orders AS a join customer AS c on a.o_orderkey=c.c_custkey and a.o_orderkey not in (12324, 7969, 45955) join (SELECT MAX(o_orderdate) AS latest FROM orders WHERE o_orderstatus = 'O' AND o_orderkey > 100 ) AS b ON a.o_orderdate = b.latest GROUP BY 7, 8, a.o_orderstatus, 3, 4, 5, 6 order by 2, 3, ORDER_DATE, 5,1 limit 05; +SELECT DISTINCT a.s_name, c.o_orderstatus FROM supplier a JOIN part b on a.s_suppkey=b.p_partkey JOIN orders c on c.o_orderkey=b.p_partkey JOIN customer d on a.s_suppkey=d.c_custkey INNER JOIN supplier AS e ON ((e.s_suppkey = a.s_suppkey) AND (e.s_suppkey = b.p_partkey)) WHERE substr(a.s_name,2)>'a' AND (a.s_suppkey IS NOT NULL OR c.o_orderstatus = 'Supplier#000009988') ORDER BY 1 DESC,2 limit 10; +SELECT COUNT (DISTINCT p.c_name) AS name1, p.c_phone AS status1, count(p.c_nationkey) FROM (SELECT l1.c_name, l2.c_phone,l1.c_nationkey, l2.c_custkey FROM customer AS l1 JOIN customer AS l2 ON l1.c_custkey = l2.c_nationkey WHERE l1.c_custkey < l1.c_acctbal ) AS p JOIN orders AS h1 ON p.c_custkey = h1.o_custkey JOIN orders AS h2 ON p.c_custkey = h2.o_orderkey GROUP BY p.c_phone ORDER BY 2,1 DESC limit 10; +select 1, sum(c_custkey) from customer group by 1; +select 1, sum(c_custkey) from customer group by 1, c_custkey order by sum(c_custkey) limit 10; +select sum(c_custkey), 1 from customer group by c_custkey, 2 order by sum(c_custkey) limit 10; +select 'aaa', sum(c_custkey) from customer group by 1; +select 'aaa', sum(c_custkey) from customer group by 'aaa'; +select avg(c_custkey), 'aaa' from customer group by c_custkey, 'aaa' order by avg(c_custkey) limit 10; +select sqrt (1), sum(c_custkey) from customer group by 'aaa'; +select sqrt (1), sum(c_custkey) from customer group by 1; +select year('1996-01-02 00:00:00'), sum(c_custkey) from customer group by 1; +select year('1996-01-02 00:00:00'), sum(c_custkey) from customer group by '1996'; +select pi(), sum(c_custkey) from customer group by 1; +select * from (select * from sms)T limit 3; +describe sms; +select count(*) from sms; +select avg(media+loc) from sms where cdr=5; +select count(*) from sms where cdr=5; +select count(*) from sms where cdr=7; +select avg(media)+sum(fsystem) from sms where cdr=5; +select * from sms limit 2; +select count(token) from sms where cdr=5 or cdr=7; +select avg(fcc) from sms where cdr=5 and token is not null; +select max(tcc) from sms; +select min(tcc), cdr from sms group by cdr; +select count(distinct(token)) from sms where cdr=7; +select count(*) from sms where cdr=5 and fsystem=1 and tudid is not null and fcc=1; +select token, media, count(fudid) from sms where cdr=5 group by token, media order by sum(fsystem) desc, token asc limit 4; +select media, sum(fsystem) from sms where cdr=5 and media > 0 group by media; +select rec_date, token from sms where cdr=7 and tudid is not null group by token, rec_date limit 4; +select fcc,fsystem,count(distinct fudid) from sms where cdr=5 and fcc is not null and fsystem is not null group by fcc, fsystem order by count(distinct fudid) desc, fcc limit 3; +select count(distinct tsystem) from sms where token='4616279800098344772'; +select count(distinct token) from sms where cdr=5; +select token, max(UNIX_TIMESTAMP(send_date)), max(UNIX_TIMESTAMP(rec_date)) from sms where cdr=5 or cdr=7 group by token having max(UNIX_TIMESTAMP(send_date)) is not null and max(unix_timestamp(rec_date)) is not null order by token limit 4; +select avg(duration) from (select token, tudid, max(unix_timestamp(rec_date)) - max(unix_timestamp(Send_date)) as duration from SMS where cdr=5 or cdr=7 group by token, tudid having ( max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(Send_date)) is not null) ) as call_time; +select count(distinct udid) from (select token,tudid as udid, max(unix_timestamp(rec_date)), max(unix_timestamp(Send_date)) from sms where cdr=5 or cdr=7 group by token,tudid having ( max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(Send_date)) is not null) ) as call_time; +select MAX(unix_timestamp(send_date))-MIN(unix_timestamp(send_date)) from sms where cdr=5 limit 3; +select token, sum(fsystem) from sms where media=0 and cdr=5 and fudid is not null group by token order by sum(fsystem) desc, token limit 4; +select distinct fudid, send_date from sms where cdr=5 and fcc=36 and media=4 and fsystem=1 and loc=1 and token='4616278460378640775'; +select distinct udid from (select token,tudid as udid, max(unix_timestamp(rec_date)), max(unix_timestamp(Send_date)) from sms where cdr=5 or cdr=7 and fcc=966 group by token,tudid having (max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(send_date)) is not null)) as call_time order by udid desc limit 3; +select token, group_id , fsystem from sms where group_id > 4612132044208109382 and fsystem <>0 and fsystem != 1 group by token,group_id, fsystem order by group_id desc limit 5; +select loc,count(push_only) from sms where push_only is not NULL group by loc; +select count(distinct f) from ( select fcc as f from sms where cdr=5) as q; +select cdr, count(distinct media) from sms group by cdr order by cdr; +select token, group_id from sms where group_id > 4622132044208109382 limit 5; +select MAX(send_date), MIN(rec_date), datediff(max(send_date), min(rec_date)) from sms; +select day(max(send_date)) - day(min(rec_date)) from sms; +select hour((send_date)), day((send_date)), send_date from sms where send_date is not NULL limit 2; +select MICROSECOND((send_date)), minute((send_date)), send_date from sms where send_date is not NULL limit 2; +select Month(max(send_date)), second(max(send_date)),second(min(rec_Date)) from sms where send_date is not NULL or rec_date is not null limit 2; +select weekofyear(max(send_date)), year(min(rec_Date)) from sms where send_date is not NULL or rec_date is not null limit 2; +select * from (select cdr, count(*) c from sms group by cdr) v1 join (select cdr, sum(media) m from sms group by cdr) v2 on (v1.cdr=v2.cdr) where v1.cdr<6; +SELECT mp, v1.cdr FROM (select cdr,min(loc) ml from sms group by cdr) v1 JOIN (select cdr,min(push_only) mp from sms group by cdr) v2 ON v1.ml=v2.mp; +SELECT cdr, count(*) FROM sms WHERE token IN (SELECT token FROM sms GROUP BY token ORDER BY count(*) DESC, token DESC LIMIT 10) GROUP BY cdr ORDER BY cdr; +select sum(fcc) from sms where token = '4616279959343472151' and 1>0; +select count(*) from sms where cdr=4 or 1=1; +select media from sms where not media=5 group by media; +select media from sms where NOT media is NULL group by media; +select count(*) from sms f where 1 >= (if (f.cdr = 5, 1, if (f.cdr = 7, 2, if (f.cdr = 16, 3, 4)))) AND (f.cdr IN (5,7,16)); +select cdr from sms where cdr between pow(2, -2) and pow(2,3) group by cdr; +select * from sms where tcc<0; +SELECT * FROM (SELECT cdr, COUNT(*) c FROM sms GROUP BY cdr) v1 JOIN (SELECT cdr, SUM(media) m FROM sms GROUP BY cdr) v2 ON (v1.cdr = v2.cdr) ORDER BY v1.cdr DESC; +select count(*) from sms where cdr in (select distinct cdr from sms where cdr =5) or cdr =7; +select 'hello', token from sms group by token limit 10; +SELECT count(distinct media), count(distinct media+1), count(distinct media*0), count(distinct token)-1 ,count(distinct substr(token,1))+2 FROM sms where cdr=5; +select cdr, (case when cdr=5 then 1 else 0 end) + 1 from sms limit 10; +SELECT media, sum(case when cdr=5 then 1 else 0 end) sum_cdr5, sum(case when cdr=7 then 1 else 0 end) sum_cdr7, sum(case when cdr=14 then 1 else 0 end) sum_cdr14, sum(case when cdr=16 then 1 else 0 end) sum_cdr16 FROM sms GROUP BY media; +select distinct(media) from sms where media = case media when 5 then 5 else 0 end; +select distinct cdr from sms where case when cdr=5 then 1 else 0 end = 0; +SELECT * FROM (select distinct case when cdr=5 then 5 else 0 end abc FROM sms) v WHERE abc <> 0; +select distinct cdr, case when cdr=5 then 'five' else 'other' end abc, if (cdr=5, 'five','other') xyz from sms; +select cdr, media, case when cdr > 15 or cdr = 14 then case cdr when 14 then 44 else 66 end else (case when cdr > media +1 then 22 end) end c from (select distinct cdr, media from sms) v; +select cdr, count(*) c, avg(media)+1 m, case when count(*) > 1000 then case when avg (media+1)>1.2 then 55 else 22 end else 0 end c100 from sms group by cdr; +select distinct media in (0,1) m from sms where media is not null; +select distinct if(media in (0,1),999,media) m from sms order by m desc; +select distinct case when cdr = 5 then 'YES' end from (select distinct cdr from sms) v; +select distinct if(cdr=5,'YES','NO') from (select distinct cdr from sms) v; +select cast(media as bigint) a from sms order by a desc limit 14; +select case when media=5 then media else 0 end a from sms order by a desc limit 6; +select count(*) from (select cdr+1 g, count(*) c from sms group by cdr+1 order by cdr+1) v; +SELECT date, date - '2013-06-02', date - date FROM sms WHERE date IS NOT NULL LIMIT 1; +select send_date, year(send_date), month(send_date), day(send_date), hour(send_date), minute(send_date), second(send_date), microsecond(send_date), dayofweek(send_date), dayofyear(send_date), weekofyear(send_date), date_add(send_date, 1) as d2, date_add(send_date, 1) - send_date, datediff(send_date, date_add(send_date, 2)), unix_timestamp('1980-10-13 13:40') from sms where send_date is not null limit 1; +select media from sms where media in (select distinct media from sms where media =3 or media is null) group by media; +SELECT cdr, media, min(tcc)+1 m FROM sms GROUP BY cdr,media ORDER BY m, cdr,media; +select if(rec_date > now(), now(), rec_date) from sms where rec_date is not null limit 1; +select case when rec_date > now() then now() else rec_date end from sms where rec_date is not null limit 1; +select count(rec_date), sum ( datediff(case when rec_date > now() then now() else date_add(rec_date, 1) end, rec_date) ) from sms where rec_date is not null; +select cdr, count(*) c, avg(media)+1 m, case when count(*) > 1000 then case when avg (media)>0.2 then min(media) - max(media) end else 0 end c100 from sms group by cdr; +select TIMESTAMPDIFF(MONTH, '2013-10-03','2013-06-03'),date from sms where date is not null limit 2; +select TIMESTAMPDIFF(MONTH, '2013-06-03','2013-10-03'),date from sms where date is not null limit 2; +select TIMESTAMPDIFF(WEEK, '2013-10-03','2013-06-03'),cdr from sms order by cdr limit 10; +select TIMESTAMPDIFF(MONTH, '2015-01-07','2016-05-25 11:23:36') AS AGE_IN_MONTH, '2016-05-25 11:23:36',date from sms where date is not null limit 2; +select TIMESTAMPDIFF(MONTH, '1999-02-25 13:14:15','2016-05-25 08:46:39.975115') AS AGE_IN_MONTH,'2016-05-25 08:46:39.975115',date from sms where date is not null limit 2; +select timestampdiff(year,to_timestamp('1970-02-25 13:14:15'), '2016-05-25 08:57:13.211593') AS are_in_year,to_timestamp('1970-02-25 13:14:15'),'2016-05-25 08:57:13.211593',date from sms order by date desc limit 2; +select T.cdr,T.age_in_years, T.date from (select timestampdiff(year,to_timestamp('1970-02-25 13:14:15'),'2022-11-25 13:14:15') AS age_in_years,date,cdr from sms) as T where T.age_in_years > 45 order by T.date desc limit 2; +select TIMESTAMPDIFF(YEAR, '1999-05-25 13:14:15','2016-05-25 08:46:39.975115') AS AGE_IN_YEAR,'2016-05-25 08:46:39.975115',date from sms where date is not null limit 2; +select TIMESTAMPDIFF(quarter, '1999-05-25 13:14:15','2016-05-25 08:46:39.975115') AS AGE_IN_MONTH,'2016-05-25 08:46:39.975115',date from sms where date is not null limit 2; +select TIMESTAMPADD(frac_second, 2000000000, '1971-02-25 13:14:15'),'1971-02-25 13:14:15',date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(sql_tsi_frac_second, 1000000000,'1999-12-31 23:59:59' ),'1999-12-31 23:59:59',date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(sql_tsi_frac_second, 100000000000000, trunc('2014-02-25 13:14:15', 'month')) AS trunc ,trunc('2014-02-25 13:14:15', 'month'),date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(frac_second, -1000000000, '2015-01-07') AS ADD,'2015-01-07',date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(month, -1, '2015-01-07') AS ADD ,'2015-01-07',date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(day, -3, '2015-01-07') AS ADD ,'2015-01-07',date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(week, -2, '2015-01-07') AS ADD ,'2015-01-07',date from sms where date is not null order by date limit 10; +select TIMESTAMPADD(frac_second, -1000000000, '1970-02-25 13:14:15') AS ADD ,'1970-02-25 13:14:15',date from sms where date is not null order by date limit 10; +select * from (select * from sgk)T limit 2; +select * from sgk limit 2; +select count(*) from sgk; +select count(distinct(keywords)) from sgk; +select ceil(sum(pageviews)) from sgk where country=4 or visits=1; +select avg(pageviews) from sgk where country=250 and visits=4; +select max(visits) from sgk; +select site, visits, sum(pageviews), sum(timeonsite) from sgk where country=0 group by site, visits order by site desc, visits desc limit 10; +select min(refid) from sgk; +select site, country, sum(visits) from sgk where site='facebook.com' and keywords is not null group by site, country order by sum(visits) limit 3; +select site, sum(visits) from sgk where country=360 group by site order by sum(visits) desc limit 3; +select site, sum(visits) from sgk where keywords='google' group by site order by sum(visits) desc limit 3; +select site,country, sum(visits) from sgk where keywords='google' group by site, country order by sum(visits) desc limit 3; +select site,sum(visits), avg(pageviews) from sgk where keywords='google' and country=32 group by site order by avg(pageviews) desc, sum(visits) desc limit 3; +select sum(refid), keywords from sgk where site='cnn.com' and month=1 group by keywords order by sum(refid) asc , keywords desc limit 10; +select visits, site, sum(pageviews) from sgk where country=44 group by visits, site order by sum(pageviews) desc limit 10; +select country, max(pageviews), min(pageviews), avg(timeonsite), count(visits) from sgk where site='google.com' group by country order by count(visits) desc limit 10; +select site, count(country),min(timeonsite) from sgk where ref_flag=1 and visits=1 group by site order by count(country) desc limit 10; +select site, count(country), sum(if (refid=1,99,88)) from sgk where ref_flag=1 and visits=1 group by site limit 10; +select site, count(site) from sgk where country=854 group by site order by count(site) desc, site asc limit 20; +select site, count(visits) from sgk where country=44 group by site limit 10; +select site, visits, sum(pageviews), sum(timeonsite) from sgk where country=0 and keywords is not null group by site, visits order by sum(pageviews) desc, sum(timeonsite) desc limit 10; +select site, country, refid, sum(visits) from sgk where month=1 and site='google.com' and country=862 group by country, site, refid order by country desc,refid, sum(visits) desc limit 10; +select site, country, avg(pageviews), sum(onepage) from sgk where site='zynga.com' group by site, country order by country asc, site asc limit 10; +select country, refid, sum(visits) from sgk where site='zylom.com' group by country, refid order by sum(visits) desc limit 10; +select sum(visits), site, country, keywords from sgk where site ='facebook.com' group by site, country, keywords order by sum(visits) desc limit 10; +select site, min(visits) from sgk group by site having min(visits)<0; +select country, site, max(onepage) from sgk group by country, site having max(onepage)>1000 order by site asc, country asc limit 5; +select country, count(site), sum(visits), sum(onepage) from sgk where site='facebook.com' and month=1 group by country limit 2; +select site, min(visits) from sgk where month=1 group by site having min(visits)<0; +select site, min(visits) from sgk where month=1 group by site having min(visits)=0 order by site limit 4; +select keywords, sum(visits) from sgk where month=1 and site='facebook.com*' and keywords is null group by keywords order by sum(visits) desc limit 1; +select keywords, sum(visits) from sgk where site='ynet.co.il' and keywords is not null and month=1 group by keywords order by sum(visits) desc limit 10; +select keywords, sum(visits) from sgk where site='facebook.com' and keywords is not null and month=1 group by keywords order by sum(visits) desc limit 4; +select keywords, sum(visits) from sgk where site='google.com*' and keywords is not null and month is not null group by keywords order by sum(visits) desc limit 12; +select refid,keywords,count(visits) from sgk where site='cnn.com' group by refid,keywords order by count(visits) desc limit 10; +select country, count(distinct keywords) from sgk group by country; +select month, count(distinct country) from sgk group by month; +select sum(visits), site, country, keywords, max(refid),min(ref_flag) from sgk where site ='facebook.com' AND keywords is not NULL group by site, country, keywords having sum(visits) > 100000 and max(refid)> 1000 and min(ref_flag) = 0 order by sum(visits) desc; +select /* optimized aggregation, testing STRING */ count(distinct site), count(distinct keywords) from sgk; +select /* avg distinct FLOAT */ avg(distinct visits) from sgk; +select /* GROUP BY with strings - less/more than 100M values */ month, count(distinct site), count(distinct keywords) from sgk group by month; +select /* GROUP BY with strings - less/more than 100M values */ month, count(distinct site), count(distinct keywords) from sgk where country = 600 group by month; +select /* GROUP BY with strings - from subquery */ month, count(distinct site), count(distinct keywords) from (select month,site,keywords from sgk where country = 600) v group by month; +select /* GROUP BY - STRING - does not fit CSN 64-bit */ timeonsite, onepage,pageviews,visits,country,site,count(distinct keywords) from sgk where country = 600 group by timeonsite, onepage,pageviews,visits,country,site having count(distinct keywords) > 1 order by site , count(distinct keywords), timeonsite, onepage limit 10; +select /* GROUP BY - FLOAT/INT - one fits CSN 64-bit, one does not */ site,country, pageviews, count(distinct visits), count(distinct ref_flag) from sgk where country = 600 group by site,country, pageviews order by site, country, pageviews desc limit 7; +select country, sum(onepage) from sgk group by country limit 10; +select country, sum(-onepage) from sgk group by country limit 10; +select country, avg(onepage) from sgk group by country limit 10; +select country, avg(-onepage) from sgk group by country limit 10; +select country, min(onepage) from sgk group by country limit 10; +select country, min(-onepage) from sgk group by country limit 10; +select country, max(onepage) from sgk group by country limit 10; +select country, max(-onepage) from sgk group by country limit 10; +select country, variance(onepage) from sgk group by country limit 10; +select country, variance(-onepage) from sgk group by country limit 10; +select country, count(onepage) from sgk group by country limit 10; +select country, count(-onepage) from sgk group by country limit 10; +select country, sum(-onepage),100 + sum(-onepage) + sum(refid) from sgk group by country having sum(-onepage)>-50 order by sum(-onepage); +select sum (visits) from sgk where country >-5 and country <1000; +select max (visits) from sgk where country between -1000 and 1000; +select country, refid from sgk where country=504 and refid=2800; +select * from (select * from store_sales)T limit 2; +select * from (select * from item)T limit 2; +select * from (select * from call_center)T limit 2; +select * from (select * from catalog_page)T limit 2; +select * from (select * from date_dim)T limit 2; +select * from (select * from ship_mode)T limit 2; +select * from (select * from catalog_sales)T limit 2; +select * from (select * from household_demographics)T limit 2; +show tables; +select count(*) from call_center; +select count(*) from catalog_page; +select count(*) from date_dim; +select count(sm_code) from ship_mode; +select count(*) from catalog_sales; +select count(*) from household_demographics; +select ceil(sum(cs1.cs_ext_discount_amt)) as excess_discount_amount FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk)) cs1 JOIN jethro_item i ON (i.i_item_sk = cs1.cs_item_sk) JOIN (SELECT cs2.cs_item_sk as cs_item_sk, 1.3 * avg(cs_ext_discount_amt) as avg_cs_ext_discount_amt FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk)) cs2 GROUP BY cs2.cs_item_sk) tmp1 ON (i.i_item_sk = tmp1.cs_item_sk); +select jethro_store_sales.ss_sold_date_sk, item.i_product_name FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE jethro_store_sales.ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -500 group by jethro_store_sales.ss_sold_date_sk, item.i_product_name order by jethro_store_sales.ss_sold_date_sk desc, i_product_name; +select ss_sold_date_sk, i_product_name, count(*) FROM jethro_store_sales JOIN jethro_item ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name order by ss_sold_date_sk desc, i_product_name; +select ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name; +select ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name HAVING sum(ss_sales_price) > 3 ORDER BY ss_sold_date_sk DESC, i_product_name; +select ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name HAVING sum(ss_sales_price) < 3 ORDER BY ss_sold_date_sk DESC, i_product_name; +select ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +select ss_sold_date_sk, i.i_product_name, count(*) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_store_sk = i_category_id AND ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name ORDER BY ss_sold_date_sk DESC, i_product_name LIMIT 10; +select d_year, d_moy, i.i_product_name, count(*) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk JOIN date_dim dt ON dt.d_date_sk = ss_sold_date_sk WHERE ss_list_price = 9.99 AND jethro_store_sales.ss_net_profit < -500 GROUP BY d_year, d_moy, i_product_name ORDER BY d_year, d_moy, i_product_name LIMIT 10; +select c_last_name ,c_first_name ,c_salutation ,c_preferred_cust_flag ,ss_ticket_number ,cnt FROM (select ss_ticket_number ,ss_customer_sk ,count(*) cnt from jethro_store_sales JOIN date_dim ON jethro_store_sales.ss_sold_date_sk=date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk=store.s_store_sk JOIN household_demographics ON jethro_store_sales.ss_hdemo_sk=household_demographics.hd_demo_sk where (date_dim.d_dom between 1 and 3 or date_dim.d_dom between 25 and 28) and (household_demographics.hd_buy_potential='>10000' or household_demographics.hd_buy_potential='Unknown') and household_demographics.hd_vehicle_count > 0 and household_demographics.hd_vehicle_count > 1 and date_dim.d_year=1998 and store.s_county='Williamson County' group by ss_ticket_number,ss_customer_sk) dn JOIN customer ON dn.ss_customer_sk = customer.c_customer_sk WHERE cnt between 15 and 20 ORDER BY c_last_name,c_first_name,c_salutation, ss_ticket_number; +select sum(cs1.cs_ext_discount_amt) as excess_discount_amount FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date between '2000-01-27' and '2000-02-27') cs1 JOIN jethro_item i ON (i.i_item_sk = cs1.cs_item_sk) JOIN (SELECT cs2.cs_item_sk as cs_item_sk, 1.3 * avg(cs_ext_discount_amt) as avg_cs_ext_discount_amt FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk) WHERE d.d_date between '2000-01-27' and '2000-02-27') cs2 GROUP BY cs2.cs_item_sk) tmp1 ON (i.i_item_sk = tmp1.cs_item_sk) WHERE i.i_manufact_id = 436; +select d_year ,item.i_brand_id brand_id ,item.i_brand brand ,sum(ss_ext_sales_price) sum_agg FROM jethro_store_sales JOIN date_dim dt ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manufact_id=436 and dt.d_moy=12 group by d_year ,item.i_brand ,item.i_brand_id ORDER BY d_year ,sum(ss_ext_sales_price) desc ,item.i_brand_id limit 10; +select i_item_id, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 from jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk JOIN promotion ON jethro_store_sales.ss_promo_sk = promotion.p_promo_sk where cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and (p_channel_email = 'N' or p_channel_event = 'N') and d_year = 1998 group by i_item_id order by i_item_id limit 100; +select i_item_id, avg(cs_quantity) agg1, avg(cs_list_price) agg2, avg(cs_coupon_amt) agg3, avg(cs_sales_price) agg4 from catalog_sales JOIN customer_demographics ON catalog_sales.cs_bill_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON catalog_sales.cs_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON catalog_sales.cs_item_sk = item.i_item_sk JOIN promotion ON catalog_sales.cs_promo_sk = promotion.p_promo_sk where cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and (p_channel_email = 'N' or p_channel_event = 'N') and d_year = 1998 group by i_item_id order by i_item_id limit 49; +select i_item_id, s_state, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 from jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN store ON jethro_store_sales.ss_store_sk = store.s_store_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk where cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and d_year = 1998 and s_state = 'TN' group by i_item_id, s_state order by i_item_id ,s_state limit 100; +select d_year ,item.i_category_id ,item.i_category ,sum(ss_ext_sales_price) as s from jethro_store_sales JOIN date_dim dt ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manager_id = 1 and dt.d_moy=12 and dt.d_year=1998 group by d_year ,item.i_category_id ,item.i_category order by sum(ss_ext_sales_price) desc,d_year ,i_category_id ,i_category limit 100; +select d_year, d_moy, i.i_product_name FROM jethro_item i JOIN jethro_store_sales ON ss_item_sk = i_item_sk JOIN date_dim dt ON dt.d_date_sk = ss_sold_date_sk WHERE ss_list_price between 0.01 and 4.99 AND jethro_store_sales.ss_net_profit > 0 and jethro_store_sales.ss_net_profit < 100 GROUP BY d_year, d_moy, i_product_name ORDER BY d_year, d_moy, i_product_name LIMIT 10; +select ss_sold_date_sk, i_product_name, count(*) FROM jethro_store_sales JOIN jethro_item ON ss_item_sk = i_item_sk WHERE ss_list_price=9.99 and ss_net_profit between -500 and -1 GROUP BY ss_sold_date_sk, i_product_name having count(*) > 1; +select i_brand_id, i_brand, i_manufact_id, i_manufact, sum(ss_ext_sales_price) ext_price FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN customer on (store_sales.ss_customer_sk = customer.c_customer_sk) JOIN customer_address on (customer.c_current_addr_sk = customer_address.ca_address_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE ss_sold_date_sk between 2451484 and 2451513 and i_manager_id = 7 and substr(ca_zip, 1, 5) <> substr(s_zip, 1, 5) GROUP BY i_brand, i_brand_id, i_manufact_id, i_manufact ORDER BY ext_price desc, i_brand, i_brand_id, i_manufact_id, i_manufact limit 100; +select d_year, i_category_id, i_category, sum(ss_ext_sales_price) as total_price FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim dt on (dt.d_date_sk = jethro_store_sales.ss_sold_date_sk) WHERE item.i_manager_id=1 and ss_sold_date_sk between 2451149 and 2451179 GROUP BY d_year, i_category_id, i_category ORDER BY sum(ss_ext_sales_price) desc, total_price desc, d_year, i_category_id, i_category limit 100; +select d_year, i_brand_id, i_brand, sum(ss_ext_sales_price) ext_price FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim dt on (store_sales.ss_sold_date_sk = dt.d_date_sk) WHERE i_manager_id = 1 and ss_sold_date_sk between 2451149 and 2451179 GROUP BY d_year, i_brand, i_brand_id ORDER BY d_year, ext_price desc, i_brand_id limit 100; +select i_brand_id, i_brand, sum(ss_ext_sales_price) ext_price FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE i_manager_id = 36 and ss_sold_date_sk between 2452245 and 2452275 GROUP BY i_brand, i_brand_id ORDER BY ext_price desc, i_brand_id limit 100; +select * FROM (SELECT i_manager_id, sum(ss_sales_price) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE ss_sold_date_sk between 2451911 and 2452275 and ((i_category in('Books', 'Children', 'Electronics') and i_class in('personal', 'portable', 'refernece', 'self-help') and i_brand in('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) or (i_category in('Women', 'Music', 'Men') and i_class in('accessories', 'classical', 'fragrances', 'pants') and i_brand in('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1'))) GROUP BY i_manager_id, d_moy) tmp1 ORDER BY i_manager_id, sum_sales limit 100; +select c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number, extended_price, extended_tax, list_price FROM (SELECT ss_ticket_number, ss_customer_sk, ca_city bought_city, sum(ss_ext_sales_price) extended_price, sum(ss_ext_list_price) list_price, sum(ss_ext_tax) extended_tax FROM jethro_store_sales JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) JOIN customer_address on (store_sales.ss_addr_sk = customer_address.ca_address_sk) WHERE store.s_city in('Midway', 'Fairview') and (household_demographics.hd_dep_count = 5 or household_demographics.hd_vehicle_count = 3) and ss_sold_date_sk between 2451180 and 2451269 GROUP BY ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city) dn JOIN customer on (dn.ss_customer_sk = customer.c_customer_sk) JOIN customer_address current_addr on (customer.c_current_addr_sk = current_addr.ca_address_sk) WHERE current_addr.ca_city <> bought_city ORDER BY c_last_name, ss_ticket_number limit 100; +select c_last_name, c_first_name, c_salutation, c_preferred_cust_flag, ss_ticket_number, cnt FROM (SELECT ss_ticket_number, ss_customer_sk, count(*) cnt FROM jethro_store_sales JOIN household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) WHERE store.s_county in ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County') and (household_demographics.hd_buy_potential = '>10000' or household_demographics.hd_buy_potential = 'unknown') and household_demographics.hd_vehicle_count > 0 and (if (household_demographics.hd_vehicle_count > 0, household_demographics.hd_dep_count/ household_demographics.hd_vehicle_count,0))> 1 and ss_sold_date_sk between 2451180 and 2451269 GROUP BY ss_ticket_number, ss_customer_sk) dj JOIN customer on (dj.ss_customer_sk = customer.c_customer_sk) WHERE cnt between 1 and 5 ORDER BY cnt desc, ss_ticket_number limit 100; +select i_item_desc, i_category, i_class, i_item_id, i_current_price, sum(ss_ext_sales_price) as itemrevenue FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE i_category in('Jewelry', 'Sports', 'Books') and ss_sold_date_sk between 2451911 and 2451941 GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price ORDER BY i_category, i_class, i_item_id, i_item_desc limit 100; +select i_category, i_class, i_item_id, i_current_price, sum(ss_ext_sales_price) as itemrevenue FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE i_category in('Jewelry', 'Sports', 'Books') and ss_sold_date_sk between 2451911 and 2451941 and not i_item_desc is null and not i_class is null GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price ORDER BY i_category, i_class desc , i_item_id, i_item_desc asc limit 60; +select dt.d_year, item.i_brand_id brand_id, item.i_brand brand, sum(ss_ext_sales_price) sum_agg FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim dt on (dt.d_date_sk = jethro_store_sales.ss_sold_date_sk) WHERE item.i_manufact_id = 436 and (ss_sold_date_sk between 2451149 and 2451179 or ss_sold_date_sk between 2451514 and 2451544 or ss_sold_date_sk between 2451880 and 2451910 or ss_sold_date_sk between 2452245 and 2452275 or ss_sold_date_sk between 2452610 and 2452640) GROUP BY d_year, item.i_brand, item.i_brand_id ORDER BY d_year, sum_agg desc, brand_id limit 100; +select i_item_id, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 FROM jethro_store_sales JOIN customer_demographics on (store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN promotion on (store_sales.ss_promo_sk = promotion.p_promo_sk) JOIN date_dim on (ss_sold_date_sk = d_date_sk) WHERE cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' and (p_channel_email = 'N' or p_channel_event = 'N') and ss_sold_date_sk between 2450815 and 2451179 GROUP BY i_item_id ORDER BY i_item_id limit 100; +select i_item_id, s_state, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 FROM jethro_store_sales JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN customer_demographics on (store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE ss_sold_date_sk between 2450815 and 2451179 and s_state in ('WI', 'CA', 'TX', 'FL', 'WA', 'TN') and cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' GROUP BY i_item_id, s_state ORDER BY i_item_id, s_state limit 100; +select s_store_name, s_store_id, sum(if (d_day_name='Sunday',ss_sales_price,0)) sun_sales, sum(if (d_day_name='Monday',ss_sales_price,0)) mon_sales, sum(if (d_day_name='Tuesday',ss_sales_price,0)) tue_sales, sum(if (d_day_name='Wednesday',ss_sales_price,0)) wed_sales, sum(if (d_day_name='Thursday',ss_sales_price,0)) thu_sales, sum(if (d_day_name='Friday',ss_sales_price,0)) fri_sales, sum(if (d_day_name='Saturday',ss_sales_price,0)) sat_sales FROM jethro_store_sales JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE s_gmt_offset = -5 and ss_sold_date_sk between 2450816 and 2451179 GROUP BY s_store_name, s_store_id ORDER BY s_store_name, s_store_id, sun_sales, mon_sales, tue_sales, wed_sales, thu_sales, fri_sales, sat_sales limit 100; +select * FROM (SELECT i_manufact_id, sum(ss_sales_price) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE ss_sold_date_sk between 2451911 and 2452275 and ((i_category in('Books', 'Children', 'Electronics') and i_class in('personal', 'portable', 'reference', 'self-help') and i_brand in('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) or (i_category in('Women', 'Music', 'Men') and i_class in('accessories', 'classical', 'fragrances', 'pants') and i_brand in('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1'))) GROUP BY i_manufact_id, d_qoy) tmp1 ORDER BY sum_sales, i_manufact_id limit 100; +select * FROM (SELECT i_category, i_class, i_brand, s_store_name, s_company_name, d_moy, sum(ss_sales_price) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE ss_sold_date_sk between 2451545 and 2451910 and ((i_category in('Home', 'Books', 'Electronics') and i_class in('wallpaper', 'parenting', 'musical')) or (i_category in('Shoes', 'Jewelry', 'Men') and i_class in('womens', 'birdal', 'pants'))) GROUP BY i_category, i_class, i_brand, s_store_name, s_company_name, d_moy) tmp1 ORDER BY sum_sales, s_store_name limit 100; +select i_item_desc, i_category, i_class, i_item_id, i_current_price, sum(ss_ext_sales_price) as itemrevenue FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE i_category in('Jewelry', 'Sports', 'Books') and ss_sold_date_sk between 2451911 and 2451941 GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_price ORDER BY i_category, i_class, i_item_id, i_item_desc limit 100; +select dt.d_year, item.i_brand_id brand_id, item.i_brand brand, sum(ss_ext_sales_price) sum_agg FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN date_dim dt on (dt.d_date_sk = jethro_store_sales.ss_sold_date_sk) WHERE item.i_manufact_id = 436 and (ss_sold_date_sk between 2451149 and 2451179 or ss_sold_date_sk between 2451514 and 2451544 or ss_sold_date_sk between 2451880 and 2451910 or ss_sold_date_sk between 2452245 and 2452275 or ss_sold_date_sk between 2452610 and 2452640) GROUP BY d_year, item.i_brand, item.i_brand_id ORDER BY d_year, sum_agg desc, brand_id limit 100; +select * FROM (SELECT i_manufact_id, sum(ss_sales_price) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) WHERE ss_sold_date_sk between 2451911 and 2452275 and ((i_category in('Books', 'Children', 'Electronics') and i_class in('personal', 'portable', 'reference', 'self-help') and i_brand in('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) or (i_category in('Women', 'Music', 'Men') and i_class in('accessories', 'classical', 'fragrances', 'pants') and i_brand in('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1'))) GROUP BY i_manufact_id, d_qoy ) tmp1 ORDER BY sum_sales, i_manufact_id limit 100; +select count(*) FROM jethro_store_sales WHERE ss_sold_Date_sk BETWEEN 2452090 and 2452290; +select count(*) from jethro_store_sales LEFT JOIN date_dim on ss_sold_Date_sk = d_date_sk WHERE d_year = 2000 and d_moy between -12 and 1; +select i_brand_id, i_brand, i_manufact_id, i_manufact, sum(ss_ext_sales_price) ext_price from jethro_store_sales join jethro_item on (store_sales.ss_item_sk = item.i_item_sk) join customer on (store_sales.ss_customer_sk = customer.c_customer_sk) join customer_address on (customer.c_current_addr_sk = customer_address.ca_address_sk) join store on (store_sales.ss_store_sk = store.s_store_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where ss_sold_date_sk between 2451484 and 2451513 and d_moy = 11 and d_year = 1999 and i_manager_id = 7 and substr(ca_zip, 1, 5) <> substr(s_zip, 1, 5) group by i_brand, i_brand_id, i_manufact_id, i_manufact order by ext_price desc, i_brand, i_brand_id, i_manufact_id, i_manufact limit 100; +select d_year, i_brand_id, i_brand, sum(ss_ext_sales_price) ext_price from jethro_store_sales join jethro_item on (store_sales.ss_item_sk = item.i_item_sk) join date_dim dt on (store_sales.ss_sold_date_sk = dt.d_date_sk) where i_manager_id = 1 and d_moy = 12 and d_year = 1998 group by d_year, i_brand, i_brand_id order by d_year, ext_price desc, i_brand_id limit 100; +select c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number, extended_price, extended_tax, list_price from (select ss_ticket_number, ss_customer_sk, ca_city bought_city, sum(ss_ext_sales_price) extended_price, sum(ss_ext_list_price) list_price, sum(ss_ext_tax) extended_tax from jethro_store_sales join store on (store_sales.ss_store_sk = store.s_store_sk) join household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) join customer_address on (store_sales.ss_addr_sk = customer_address.ca_address_sk) where store.s_city in('Midway', 'Fairview') and date_dim.d_dom between 1 and 2 and (household_demographics.hd_dep_count = 5 or household_demographics.hd_vehicle_count = 3) and d_date between '1999-01-01' and '1999-03-31' group by ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city ) dn join customer on (dn.ss_customer_sk = customer.c_customer_sk) join customer_address current_addr on (customer.c_current_addr_sk = current_addr.ca_address_sk) where current_addr.ca_city <> bought_city order by c_last_name, ss_ticket_number limit 100; +select c_last_name, c_first_name, c_salutation, c_preferred_cust_flag, ss_ticket_number, cnt from (select ss_ticket_number, ss_customer_sk, count(*) cnt from jethro_store_sales join household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) join store on (store_sales.ss_store_sk = store.s_store_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where store.s_county in ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County') and date_dim.d_dom between 1 and 2 and date_dim.d_year in(1998, 1998 + 1, 1998 + 2) and (household_demographics.hd_buy_potential = '>10000' or household_demographics.hd_buy_potential = 'unknown') and household_demographics.hd_vehicle_count > 0 and (if (household_demographics.hd_vehicle_count > 0, household_demographics.hd_dep_count / household_demographics.hd_vehicle_count, 0)) > 1 group by ss_ticket_number, ss_customer_sk ) dj join customer on (dj.ss_customer_sk = customer.c_customer_sk) where cnt between 1 and 5 order by cnt desc limit 1000; +select i_item_desc, i_category, i_class, i_current_price, sum(ss_ext_sales_price) as itemrevenue, sum(ss_ext_sales_price) * 100 / sum(ss_ext_sales_price) from jethro_store_sales join jethro_item on (store_sales.ss_item_sk = item.i_item_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where i_category in('Jewelry', 'Sports', 'Books') and d_date between '2001-01-12' and date_add('2001-01-12', 30) and d_date between '2001-01-12' and '2001-02-11' and ss_sold_date_sk between 2451922 and 2451952 and ss_sold_date_sk between 2451911 and 2451941 and d_date between '2001-01-01' and '2001-01-31' group by i_item_id, i_item_desc, i_category, i_class, i_current_price order by i_category, i_class, i_item_id, i_item_desc limit 999; +select dt.d_year, item.i_brand_id brand_id, item.i_brand brand, sum(ss_ext_sales_price) sum_agg from jethro_store_sales join jethro_item on (ss_item_sk = item.i_item_sk) join date_dim dt on (dt.d_date_sk = ss_sold_date_sk) where item.i_manufact_id = 436 and (dt.d_moy=12) and (ss_sold_date_sk between 2451149 and 2451179 or ss_sold_date_sk between 2451514 and 2451544 or ss_sold_date_sk between 2451880 and 2451910 or ss_sold_date_sk between 2452245 and 2452275 or ss_sold_date_sk between 2452610 and 2452640) and d_year != 2000 and i_brand_id between 1001002 and 1001012 group by d_year, i_brand_id, i_brand; +select i_item_id, s_state, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 from jethro_store_sales join store on (store_sales.ss_store_sk = store.s_store_sk) join customer_demographics on (store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk) join jethro_item on (store_sales.ss_item_sk = item.i_item_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where ss_sold_date_sk between 2450815 and 2451179 and d_year = 1998 and s_state in ('WI', 'CA', 'TX', 'FL', 'WA', 'TN') and cd_gender = 'F' and cd_marital_status = 'W' and cd_education_status = 'Primary' group by i_item_id, s_state order by i_item_id, s_state limit 88; +select s_store_name, s_store_id, sum(if (d_day_name='Sunday',ss_sales_price,0)) sun_sales, sum(if (d_day_name='Monday',ss_sales_price,0)) mon_sales, sum(if (d_day_name='Tuesday',ss_sales_price,0)) tue_sales, sum(if (d_day_name='Wednesday',ss_sales_price,0)) wed_sales, sum(if (d_day_name='Thursday',ss_sales_price,0)) thu_sales, sum(if (d_day_name='Friday',ss_sales_price,0)) fri_sales, sum(if (d_day_name='Saturday',ss_sales_price,0)) sat_sales from jethro_store_sales join store on (store_sales.ss_store_sk = store.s_store_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where s_gmt_offset = -5 and d_year = 1998 and ss_sold_date_sk between 2450816 and 2451179 group by s_store_name, s_store_id order by s_store_name, s_store_id, sun_sales, mon_sales, tue_sales, wed_sales, thu_sales, fri_sales, sat_sales limit 93; +select * from (select i_manufact_id, sum(ss_sales_price) sum_sales, avg(ss_sales_price) avg_quarterly_sales from jethro_store_sales join jethro_item on (store_sales.ss_item_sk = item.i_item_sk) join store on (store_sales.ss_store_sk = store.s_store_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where d_month_seq in(1212, 1212 + 1, 1212 + 2, 1212 + 3, 1212 + 4, 1212 + 5, 1212 + 6, 1212 + 7, 1212 + 8, 1212 + 9, 1212 + 10, 1212 + 11) and ((i_category in('Books', 'Children', 'Electronics') and i_class in('personal', 'portable', 'reference', 'self-help') and i_brand in('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9')) or (i_category in('Women', 'Music', 'Men') and i_class in('accessories', 'classical', 'fragrances', 'pants') and i_brand in('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1'))) group by i_manufact_id, d_qoy) tmp1 where if (avg_quarterly_sales > 0, (sum_sales - avg_quarterly_sales) / avg_quarterly_sales, 0) > 0.1 order by avg_quarterly_sales desc, sum_sales desc, i_manufact_id limit 101; +select * from (select i_category, i_class, i_brand, s_store_name, s_company_name, d_moy, sum(ss_sales_price) sum_sales, avg(ss_sales_price) avg_monthly_sales from jethro_store_sales join jethro_item on (store_sales.ss_item_sk = item.i_item_sk) join store on (store_sales.ss_store_sk = store.s_store_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where ss_sold_date_sk between 2451545 and 2451910 and d_year in (2000) and ((i_category in('Home', 'Books', 'Electronics') and i_class in('wallpaper', 'parenting', 'musical')) or (i_category in('Shoes', 'Jewelry', 'Men') and i_class in('womens', 'birdal', 'pants'))) group by i_category, i_class, i_brand, s_store_name, s_company_name, d_moy) tmp1 where if ((avg_monthly_sales <> 0),(sum_sales - avg_monthly_sales) / avg_monthly_sales, 0) > 0.1 order by sum_sales, avg_monthly_sales, sum_sales, s_store_name limit 111; +select c_last_name, c_first_name, c_salutation, c_preferred_cust_flag, ss_ticket_number, cnt from (select ss_ticket_number, ss_customer_sk, count(*) cnt from jethro_store_sales join household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) join store on (store_sales.ss_store_sk = store.s_store_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where date_dim.d_year in (1998, 1998 + 1, 1998 + 2) and (date_dim.d_dom between 1 and 3 or date_dim.d_dom between 25 and 28) and (household_demographics.hd_buy_potential = '>10000' or household_demographics.hd_buy_potential = 'unknown') and household_demographics.hd_vehicle_count > 0 and (if (household_demographics.hd_vehicle_count > 0, household_demographics.hd_dep_count / household_demographics.hd_vehicle_count, 0)) > 1.2 and store.s_county in ('Saginaw County', 'Sumner County', 'Appanoose County', 'Daviess County', 'Fairfield County', 'Raleigh County', 'Ziebach County', 'Williamson County') and ss_sold_date_sk between 2450816 and 2451910 group by ss_ticket_number, ss_customer_sk) dn join customer on (dn.ss_customer_sk = customer.c_customer_sk) where cnt between 15 and 20 order by c_last_name, c_first_name, c_salutation, c_preferred_cust_flag, 5, 6 desc limit 10; +select c_last_name, c_first_name, ca_city, bought_city, ss_ticket_number, amt, profit from (select ss_ticket_number, ss_customer_sk, ca_city bought_city, sum(ss_coupon_amt) amt, sum(ss_net_profit) profit from jethro_store_sales join store on (store_sales.ss_store_sk = store.s_store_sk) join household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) join customer_address on (store_sales.ss_addr_sk = customer_address.ca_address_sk) where store.s_city in ('Midway', 'Concord', 'Spring Hill', 'Brownsville', 'Greenville') and (household_demographics.hd_dep_count = 5 or household_demographics.hd_vehicle_count = 3) and date_dim.d_dow in (6, 0) and date_dim.d_year in (1999, 1999 + 1, 1999 + 2) group by ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city) dn join customer on (dn.ss_customer_sk = customer.c_customer_sk) join customer_address current_addr on (customer.c_current_addr_sk = current_addr.ca_address_sk) where current_addr.ca_city <> bought_city order by c_last_name desc, c_first_name desc, ca_city desc, bought_city desc, ss_ticket_number limit 68; +select s_store_name1, s_store_id1, d_week_seq1, sun_sales1 / sun_sales2, mon_sales1 / mon_sales2, tue_sales1 / tue_sales2, wed_sales1 / wed_sales2, thu_sales1 / thu_sales2, fri_sales1 / fri_sales2, sat_sales1 / sat_sales2 from (select s_store_name s_store_name1, wss.d_week_seq d_week_seq1, s_store_id s_store_id1, sun_sales sun_sales1, mon_sales mon_sales1, tue_sales tue_sales1, wed_sales wed_sales1, thu_sales thu_sales1, fri_sales fri_sales1, sat_sales sat_sales1 from (select d_week_seq, ss_store_sk, sum(if (d_day_name='Sunday',ss_sales_price,0)) sun_sales, sum(if (d_day_name='Monday',ss_sales_price,0)) mon_sales, sum(if (d_day_name='Tuesday',ss_sales_price,0)) tue_sales, sum(if (d_day_name='Wednesday',ss_sales_price,0)) wed_sales, sum(if (d_day_name='Thursday',ss_sales_price,0)) thu_sales, sum(if (d_day_name='Friday',ss_sales_price,0)) fri_sales, sum(if (d_day_name='Saturday',ss_sales_price,0)) sat_sales from jethro_store_sales join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where ss_sold_date_sk between 2451088 and 2451452 group by d_week_seq, ss_store_sk ) wss join store on (wss.ss_store_sk = store.s_store_sk) join date_dim d on (wss.d_week_seq = d.d_week_seq) where d_month_seq between 1185 and 1185 + 11) y join (select s_store_name s_store_name2, wss.d_week_seq d_week_seq2, s_store_id s_store_id2, sun_sales sun_sales2, mon_sales mon_sales2, tue_sales tue_sales2, wed_sales wed_sales2, thu_sales thu_sales2, fri_sales fri_sales2, sat_sales sat_sales2 from (select d_week_seq, ss_store_sk, sum(if (d_day_name='Sunday',ss_sales_price,0)) sun_sales, sum(if (d_day_name='Monday',ss_sales_price,0)) mon_sales, sum(if (d_day_name='Tuesday',ss_sales_price,0)) tue_sales, sum(if (d_day_name='Wednesday',ss_sales_price,0)) wed_sales, sum(if (d_day_name='Thursday',ss_sales_price,0)) thu_sales, sum(if (d_day_name='Friday',ss_sales_price,0)) fri_sales, sum(if (d_day_name='Saturday',ss_sales_price,0)) sat_sales from jethro_store_sales join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) where ss_sold_date_sk between 2451088 and 2451452 group by d_week_seq, ss_store_sk ) wss join store on (wss.ss_store_sk = store.s_store_sk) join date_dim d on (wss.d_week_seq = d.d_week_seq) where d_month_seq between 1185 + 12 and 1185 + 23 ) x on (y.s_store_id1 = x.s_store_id2) where d_week_seq1 = d_week_seq2 - 52 order by s_store_name1, s_store_id1, d_week_seq1 limit 73; +select c_last_name, c_first_name, substr(s_city, 1, 30) as city, ss_ticket_number, amt, profit from (select ss_ticket_number, ss_customer_sk, s_city, sum(ss_coupon_amt) amt, sum(ss_net_profit) profit from jethro_store_sales join household_demographics on (store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk) join date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) join store on (store_sales.ss_store_sk = store.s_store_sk) where store.s_number_employees between 200 and 295 and (household_demographics.hd_dep_count = 8 or household_demographics.hd_vehicle_count > 0) and date_dim.d_dow = 1 and date_dim.d_year in (1998, 1998 + 1, 1998 + 2) and d_date between '1999-01-01' and '1999-03-31' and ss_sold_date_sk between 2451180 and 2451269 group by ss_ticket_number, ss_customer_sk, ss_addr_sk, s_city) ms join customer on (ms.ss_customer_sk = customer.c_customer_sk) order by c_last_name desc, c_first_name, substr(s_city, 1, 30), city, profit desc limit 36; +select count(*) as total, count(ss_sold_date_sk) as not_null_total, count(distinct ss_sold_date_sk) as unique_days, max(ss_sold_date_sk) as max_ss_sold_date_sk, max(ss_sold_time_sk) as max_ss_sold_time_sk, max(ss_item_sk) as max_ss_item_sk, max(ss_customer_sk) as max_ss_customer_sk, max(ss_cdemo_sk) as max_ss_cdemo_sk, max(ss_hdemo_sk) as max_ss_hdemo_sk, max(ss_addr_sk) as max_ss_addr_sk, max(ss_store_sk) as max_ss_store_sk, max(ss_promo_sk) as max_ss_promo_sk from jethro_store_sales; +select count(*) FROM jethro_item WHERE i_class IN ('pop', 'dresses', 'decor', 'infants', 'shirts', 'pants', 'newborn', 'toddlers', 'swimwear'); +select d_year, d_moy, count(*) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk JOIN date_dim dt ON dt.d_date_sk = ss_sold_date_sk GROUP BY d_year, d_moy ORDER BY d_year, d_moy LIMIT 10; +SELECT i_manufact_id, sum(ss_sales_price) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) JOIN store on (store_sales.ss_store_sk = store.s_store_sk) JOIN date_dim on (store_sales.ss_sold_date_sk = date_dim.d_date_sk) GROUP BY i_manufact_id limit 11; +SELECT sum(ss_sales_price) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) WHERE jethro_store_sales.ss_store_sk = 2; +SELECT sum(ss_ticket_number) sum_sales FROM jethro_store_sales JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk); +SELECT count(*) FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk; +select jethro_store_sales.ss_sold_date_sk FROM jethro_store_sales JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk group by jethro_store_sales.ss_sold_date_sk order by jethro_store_sales.ss_sold_date_sk desc limit 4; +select ss_sold_date_sk, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk GROUP BY ss_sold_date_sk HAVING sum(ss_sales_price) < 3 ORDER BY ss_sold_date_sk DESC; +select ss_ticket_number, avg(ss_quantity) agg1, avg(ss_list_price) agg2, avg(ss_coupon_amt) agg3, avg(ss_sales_price) agg4 from jethro_store_sales JOIN customer_demographics ON jethro_store_sales.ss_cdemo_sk = customer_demographics.cd_demo_sk JOIN date_dim ON jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk JOIN promotion ON jethro_store_sales.ss_promo_sk = promotion.p_promo_sk group by ss_ticket_number order by ss_ticket_number limit 8; +select count(*) from jethro_store_sales JOIN date_dim on ss_sold_Date_sk = d_date_sk; +SELECT /* optimized aggregation, testing INT, FLOAT, DOUBLE */ count(distinct ss_item_sk), count(distinct ss_list_price), count(distinct ss_net_paid) FROM jethro_store_sales; +SELECT /* BITMAP distinct - INT, FLOAT, DOUBLE */ count(distinct ss_item_sk), count(distinct ss_list_price), count(distinct ss_net_paid) FROM jethro_store_sales WHERE ss_ticket_number > -9; +SELECT /* CSN distinct - INT, FLOAT, DOUBLE */ count(distinct ss_item_sk) /10, count(distinct ss_list_price) /2, count(distinct ss_net_paid)/3 FROM jethro_store_sales WHERE ss_ticket_number > -9; +SELECT /* mix of CSN and BITMAP distinct - INT, FLOAT, DOUBLE */ count(distinct ss_item_sk), count(distinct ss_list_price), count(distinct ss_net_paid) FROM jethro_store_sales WHERE ss_ticket_number >1; +SELECT /* HASH distinct on first two column, regular on last column */ count(distinct ss_item_sk+1), count(distinct floor(ss_list_price)), count(distinct ss_net_paid) FROM jethro_store_sales WHERE ss_ticket_number > -9; +SELECT /* test from subquery - INT, FLOAT, DOUBLE */ count(distinct ss_item_sk), count(distinct ss_list_price), count(distinct ss_net_paid) FROM (SELECT ss_item_sk, ss_list_price, ss_net_paid FROM jethro_store_sales WHERE ss_ticket_number > -9) v; +select /* GROUP BY with JOIN - columns from different tables + timestamp */ i_color,count(distinct ss_customer_sk), count(distinct i_rec_start_date) from jethro_store_sales join jethro_item on ss_item_sk = i_item_sk group by i_color order by i_color; +SELECT sum(ss_ticket_number) sum_sales FROM jethro_store_sales LEFT JOIN jethro_item on (store_sales.ss_item_sk = item.i_item_sk) where item.i_item_sk=123; +select ceil(sum(cs1.cs_ext_discount_amt)) as excess_discount_amount FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs LEFT JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk)) cs1 LEFT JOIN jethro_item i ON (i.i_item_sk = cs1.cs_item_sk) LEFT JOIN (SELECT cs2.cs_item_sk as cs_item_sk, 1.3 * avg(cs_ext_discount_amt) as avg_cs_ext_discount_amt FROM (SELECT cs.cs_item_sk as cs_item_sk, cs.cs_ext_discount_amt as cs_ext_discount_amt FROM catalog_sales cs JOIN date_dim d ON (d.d_date_sk = cs.cs_sold_date_sk)) cs2 GROUP BY cs2.cs_item_sk) tmp1 ON (i.i_item_sk = tmp1.cs_item_sk) where i.i_item_sk=10; +SELECT MAX(-store_sales.ss_net_profit)/3 AS TEMP_Calculation_BHJFIBAEDHGAIIBGGF__BCADFHAEFC__A_, 5*MIN(store_sales.ss_net_profit+1) AS TEMP_Calculation_BHJFIBAEDHGAIIBGGF__CGJFJAFJEB__A_, item.i_class AS i_class, SUM(-store_sales.ss_net_profit) AS sum_Calculation_BHJFIBAEDHFFBGHHEE_ok FROM (def_schema.store_sales AS jethro_store_sales INNER JOIN def_schema.item AS jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk ) GROUP BY item.i_class; +SELECT store.s_state AS s_state, AVG(-store_sales.ss_net_profit) AS sum_Calculation_EBGABDABEBGCJJIC_ok, AVG(store_sales.ss_net_paid) AS sum_ss_net_paid_ok FROM (def_schema.store_sales AS jethro_store_sales INNER JOIN def_schema.store AS store ON jethro_store_sales.ss_store_sk = store.s_store_sk ) GROUP BY store.s_state; +SELECT store.s_state AS s_state, AVG(store_sales.ss_net_profit*3) AS sum_Calculation_EBGABDABEBGCJJIC_ok, AVG(store_sales.ss_net_paid+3) AS sum_ss_net_paid_ok FROM (def_schema.store_sales AS jethro_store_sales INNER JOIN def_schema.store AS store ON jethro_store_sales.ss_store_sk = store.s_store_sk ) GROUP BY store.s_state; +SELECT store.s_state AS s_state, AVG(store_sales.ss_net_profit*3) AS sum_Calculation_EBGABDABEBGCJJIC_ok, AVG(store_sales.ss_net_paid+3) AS sum_ss_net_paid_ok FROM (def_schema.store_sales AS jethro_store_sales LEFT JOIN def_schema.store AS store ON jethro_store_sales.ss_store_sk = store.s_store_sk ) GROUP BY store.s_state; +SELECT store.s_state AS s_state, AVG(store_sales.ss_net_profit*3) AS sum_Calculation_EBGABDABEBGCJJIC_ok, AVG(store_sales.ss_net_paid+3) AS sum_ss_net_paid_ok FROM (def_schema.store AS store RIGHT JOIN def_schema.store_sales AS jethro_store_sales ON jethro_store_sales.ss_store_sk = store.s_store_sk ) GROUP BY store.s_state; +SELECT store.s_state AS s_state, AVG(store_sales.ss_net_profit*3)/9 AS sum_Calculation_EBGABDABEBGCJJIC_ok, AVG(store_sales.ss_net_paid+3) AS sum_ss_net_paid_ok FROM (def_schema.store_sales AS jethro_store_sales INNER JOIN def_schema.store AS store ON jethro_store_sales.ss_store_sk = store.s_store_sk ) GROUP BY store.s_state; +SELECT store.s_state AS s_state, count(store_sales.ss_net_profit)*2 AS sum_Calculation_EBGABDABEBGCJJIC_ok, count(store_sales.ss_net_paid) AS sum_ss_net_paid_ok FROM (def_schema.store_sales AS jethro_store_sales INNER JOIN def_schema.store AS store ON jethro_store_sales.ss_store_sk = store.s_store_sk ) GROUP BY store.s_state; +select d_current_week,sum(d_moy),d_date from date_dim where YEAR(d_date) > 1989 group by d_date,d_current_week limit 10; +select count(*) from date_dim where d_date between '2001-01-01' and '2005-05-12'; +select * from date_dim where d_date >= '2002-05-25' and d_date <= '2002-01-01'; +select d_date from date_dim where YEAR(d_date) > 2001 order by d_date desc limit 20; +select d_date,d_following_holiday from date_dim where d_following_holiday = 'Y' and YEAR(d_date) = 2019; +select d_date,d_year from date_dim where d_year > 2037 and d_date between '2001-01-01' and '2012-05-12'; +select d_date,d_year from date_dim where d_year < 2037 and d_date between '2001-01-01' and '2012-05-12' and YEAR(d_date) > 2010; +select d_date from date_dim where YEAR(d_date) between 2005 and 2012 AND MONTH(d_date) between 01 and 08 limit 10; +select d_date from date_dim where MONTH(d_date) != 08 and YEAR(d_date) > 2015 order by d_date desc limit 10; +select count(*) from date_dim where DAY(d_date) != 17 and YEAR(d_date) = 2015 order by d_date desc; +select count(d_fy_year) from date_dim where d_fy_year is null OR d_date between '1999-01-01' and '2002-05-12'; +select count(d_fy_year) from date_dim where d_fy_year is null AND d_date between '1999-01-01' and '2002-05-12'; +select d_date,d_year from date_dim where d_year > 2000 and d_year < 2015 and d_date between '2001-01-01' and '2012-05-12' limit 10; +select year(date_dim.d_date),sum(ss_quantity) from jethro_store_sales join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk where d_year > 2000 and d_year < 2015 and d_date between '2001-01-01' and '2012-05-12' and jethro_store_sales.ss_store_sk IN (1,2,3,4,5,6,7,8,9,10) group by year(date_dim.d_date); +select year(date_dim.d_date),sum(ss_quantity) from jethro_store_sales join date_dim on jethro_store_sales.ss_sold_date_sk = date_dim.d_date_sk where d_year > 2000 and d_year < 2015 and d_date between '2001-01-01' and '2012-05-12' and jethro_store_sales.ss_store_sk between 1 and 200 group by year(date_dim.d_date); +select d_following_holiday,sum(d_month_seq) from date_dim where d_date >= '2002-01-01' and d_date <= '2002-05-25' group by d_following_holiday; +select count(i_color) FROM jethro_item where i_color = 'black'; +select count(i_color) FROM jethro_item where i_color between 'black' and 'brown'; +SELECT cc_rec_start_date from call_center where cc_rec_start_date IN (SELECT cc_rec_start_date from call_center where cc_rec_start_date = '1998-01-01 00:00:00.000'); +SELECT ss_store_sk,count(distinct ss_quantity) FROM jethro_store_sales GROUP BY ss_store_sk order by ss_store_sk limit 10; +select ss_hdemo_sk, count(distinct ss_net_profit) FROM jethro_store_sales GROUP BY ss_hdemo_sk order by ss_hdemo_sk limit 10; +SELECT ss_quantity,ss_store_sk,count(distinct ss_net_profit) FROM jethro_store_sales GROUP BY ss_quantity, ss_store_sk order by ss_quantity limit 10; +select ss_hdemo_sk+1, count(distinct ss_net_profit) FROM jethro_store_sales GROUP BY ss_hdemo_sk+1 order by ss_hdemo_sk+1 limit 10; +SELECT ss_item_sk FROM (SELECT ss_item_sk,ss_store_sk FROM store_sales) T1 WHERE ss_store_sk=10 order by ss_item_sk limit 12; +SELECT ss_store_sk FROM (SELECT * FROM store_sales) T1 WHERE ss_store_sk=10 order by ss_store_sk limit 12; +SELECT ss_item_sk+1 FROM (SELECT ss_item_sk,ss_store_sk FROM store_sales) T1 WHERE ss_store_sk=10 order by ss_item_sk+1 limit 12; +SELECT ss_item_sk FROM (SELECT count (ss_item_sk)+1,ss_store_sk,ss_item_sk FROM jethro_store_sales group by ss_store_sk,ss_item_sk) T1 WHERE ss_store_sk=10 order by ss_item_sk limit 12; +SELECT ss_item_sk FROM (SELECT T1.ss_item_sk,T1.ss_store_sk, T2.i_color FROM jethro_store_sales AS T1 JOIN jethro_item AS T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10) T3 WHERE T3.i_color='coral' order by ss_item_sk limit 20; +SELECT ss_item_sk FROM (SELECT ss_item_sk,ss_store_sk FROM store_sales) T1 JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM item) T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10 AND T2.i_color='coral' order by ss_item_sk limit 20; +SELECT T1.ss_item_sk, T1.ss_store_sk FROM (SELECT ss_item_sk,ss_store_sk FROM store_sales) T1 JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM item) T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10 OR T2.i_color='coral' order by ss_item_sk,ss_store_sk limit 10; +SELECT T1.ss_item_sk, T1.ss_store_sk FROM (SELECT ss_item_sk,ss_store_sk FROM store_sales) T1 JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM item) T2 ON T1.ss_item_sk=T2.i_item_sk WHERE (T1.ss_store_sk=10 AND T2.i_color='coral') OR (T2.i_size='petite' AND T1.ss_store_sk is not NULL) order by ss_item_sk,ss_store_sk limit 10; +SELECT T1.ss_item_sk, T1.ss_store_sk FROM (SELECT ss_item_sk,ss_store_sk FROM jethro_store_sales WHERE (ss_promo_sk IN (161, 70, 7)) OR ss_promo_sk>172) T1 JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM jethro_item WHERE i_size='petite') T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10 AND T2.i_color='coral' order by ss_item_sk,ss_store_sk limit 10; +SELECT T1.ss_item_sk, T1.ss_store_sk FROM (SELECT ss_item_sk,ss_store_sk FROM jethro_store_sales WHERE (ss_promo_sk IN (161, 70, 7)) OR ss_promo_sk>172) T1 JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM jethro_item WHERE i_size='petite') T2 ON T1.ss_item_sk=T2.i_item_sk JOIN (SELECT cr_returned_time_sk, cr_item_sk, cr_reason_sk FROM catalog_returns WHERE cr_reason_sk>5) T3 ON T1.ss_item_sk=T3.cr_item_sk WHERE T1.ss_store_sk=10 AND (T2.i_color ='coral' OR T2.i_color ='red') AND T3.cr_reason_sk>6 order by T1.ss_item_sk, T1.ss_store_sk limit 10; +select ss_item_sk, ss_store_sk from jethro_store_sales inner join jethro_item ON jethro_store_sales.ss_item_sk=item.i_item_sk inner join store ON jethro_store_sales.ss_store_sk=store.s_store_sk inner join reason ON item.i_item_sk=reason.r_reason_sk where i_item_sk = 21 group by ss_item_sk, ss_store_sk order by (1), (2) limit 5; +select ss_item_sk, ss_store_sk from jethro_store_sales inner join jethro_item ON jethro_store_sales.ss_item_sk=item.i_item_sk inner join store ON jethro_store_sales.ss_store_sk=store.s_store_sk inner join reason ON item.i_item_sk=reason.r_reason_sk where i_item_sk = 21 order by (1), (2) limit 8; +select ss_item_sk, ss_store_sk from jethro_store_sales inner join jethro_item ON jethro_store_sales.ss_item_sk=item.i_item_sk inner join store ON jethro_store_sales.ss_store_sk=store.s_store_sk inner join reason ON item.i_item_sk=reason.r_reason_sk where i_item_sk = 21 order by (2)DESC, (1)ASC limit 7; +SELECT d_year ,item.i_brand_id brand_id ,item.i_brand brand ,sum(ss_ext_sales_price) as sum_agg FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manufact_id=436 and dt.d_moy=12 group by d_year ,item.i_brand ,item.i_brand_id ORDER BY d_year ,(1), (4) desc ,(2) limit 10; +SELECT q1.d_year FROM (SELECT d_year ,item.i_brand_id brand_id ,item.i_brand brand ,sum(ss_ext_sales_price) sum_agg FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manufact_id=436 and dt.d_moy=12 group by d_year ,item.i_brand ,item.i_brand_id ORDER BY d_year ,(4) desc ,(2) limit 10) q1 ORDER BY (1) desc; +SELECT d_year ,item.i_brand_id brand_id ,item.i_brand brand ,sum(ss_ext_sales_price) sum_agg FROM date_dim dt JOIN jethro_store_sales ON dt.d_date_sk = jethro_store_sales.ss_sold_date_sk JOIN jethro_item ON jethro_store_sales.ss_item_sk = item.i_item_sk WHERE item.i_manufact_id=436 and dt.d_moy=12 group by d_year ,item.i_brand ,item.i_brand_id ORDER BY d_year ,(4) desc ,(2) limit 10; +select ss_quantity+1, count (distinct ss_promo_sk) from jethro_store_sales where ss_quantity>=97 group by ss_quantity+1; +SELECT D1.c_first_name AS Customer, Sum(F.ss_net_profit)+1 AS Profits, COUNT (distinct F.ss_quantity) + 15 FROM jethro_store_sales F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk GROUP BY D1.c_first_name ORDER BY D1.c_first_name LIMIT 10; +SELECT D1.c_first_name AS Customer, avg(F.ss_net_profit+1) AS Profits, COUNT (distinct F.ss_quantity) FROM jethro_store_sales F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk GROUP BY D1.c_first_name ORDER BY D1.c_first_name limit 5; +SELECT D.d_date, MIN(YEAR(F.i_rec_start_date)) AS MINYEARDATE, COUNT(distinct i_brand_id) AS COUNTDQUANTITY FROM jethro_item F JOIN date_dim D ON F.i_rec_start_date=D.d_date GROUP BY D.d_date ORDER BY D.d_date, MIN(YEAR(i_rec_start_date)) limit 10; +SELECT D1.c_first_name, COUNT(*), COUNT (distinct F.ss_quantity) FROM jethro_store_sales F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk WHERE F.ss_net_profit in (select ss_net_profit FROM store_sales) GROUP BY D1.c_first_name ORDER BY D1.c_first_name limit 6; +SELECT D1.c_first_name AS Customer, sum(F.ss_net_profit) AS Profits, COUNT (distinct F.ss_quantity) FROM jethro_store_sales F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk GROUP BY D1.c_first_name order by D1.c_first_name limit 10; +SELECT ss_item_sk,COUNT(DISTINCT CASE WHEN (((ss_item_sk > 0 AND ss_cdemo_sk > 1) AND ss_wholesale_cost <> 300.23) OR ss_addr_sk = 8) THEN ss_item_sk WHEN (NOT ss_item_sk = 0 AND ss_wholesale_cost <> 1) THEN NULL ELSE NULL END) FROM jethro_store_sales GROUP BY ss_item_sk limit 5; +SELECT i_rec_start_date, QUARTER(i_rec_start_date), WEEKOFYEAR(i_rec_start_date), DAYOFWEEK(i_rec_start_date), DAYOFMONTH(i_rec_start_date), SUM(i_item_sk) FROM jethro_item GROUP BY QUARTER(i_rec_start_date), WEEKOFYEAR(i_rec_start_date), DAYOFWEEK(i_rec_start_date), DAYOFMONTH(i_rec_start_date),i_rec_start_date; +SELECT D1.c_first_name AS Customer, sum(F.ss_net_profit) AS Profits, COUNT (distinct F.ss_quantity) FROM (select * from store_sales) F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk GROUP BY D1.c_first_name order by Customer, 2, 3 limit 10; +SELECT D1.c_first_name AS Customer, Sum(F.ss_net_profit)+1 AS Profits, COUNT (distinct F.ss_quantity) + 15 FROM jethro_store_sales F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk GROUP BY D1.c_first_name ORDER BY D1.c_first_name LIMIT 10; +SELECT D1.c_first_name AS Customer, avg(F.ss_net_profit+1) AS Profits, COUNT (distinct F.ss_quantity) FROM jethro_store_sales F JOIN customer D1 ON F.ss_customer_sk=D1.c_customer_sk GROUP BY D1.c_first_name ORDER BY D1.c_first_name limit 5; +SELECT ss_item_sk FROM (SELECT T1.ss_item_sk,T1.ss_store_sk, T2.i_color FROM (select * from store_sales) T1 RIGHT JOIN jethro_item AS T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10) T3 WHERE T3.i_color='coral' order by ss_item_sk limit 10; +SELECT ss_item_sk FROM (SELECT T1.ss_item_sk,T1.ss_store_sk, T2.i_color FROM (select * from store_sales) T1 LEFT JOIN jethro_item AS T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10) T3 WHERE T3.i_color='coral' order by ss_item_sk desc limit 9; +SELECT ss_item_sk FROM (SELECT ss_item_sk,ss_store_sk FROM (select * from store_sales) T4) T1 LEFT JOIN (SELECT i_size, i_category, i_item_sk,i_color FROM (select * from jethro_item where i_color<>'coral') T5) T2 ON T1.ss_item_sk=T2.i_item_sk WHERE T1.ss_store_sk=10 AND T2.i_color='red' order by ss_item_sk limit 10; +select count(*), ss_item_sk+1 FROM (select * from store_sales)T WHERE ss_sold_Date_sk BETWEEN 2452090 and 2452290 group by ss_item_sk+1 order by 2, 1 limit 8; +select count(*) from (select * from date_dim)T where d_date between '2001-01-01' and '2005-05-12'; +select * from (select * from sms)T limit 2; +select count(*) from sms; +select avg(media+loc) from sms where cdr=5; +select count(*) from sms where cdr=5; +select count(*) from sms where cdr=7; +select avg(media)+sum(fsystem) from sms where cdr=5; +select * from sms limit 2; +select count(token) from sms where cdr=5 or cdr=7; +select avg(fcc) from sms where cdr=5 and token is not null; +select max(tcc) from sms; +select min(tcc), cdr from sms group by cdr order by cdr; +select count(distinct(token)) from sms where cdr=7; +select count(*) from sms where cdr=5 and fsystem=1 and tudid is not null and fcc=1; +select token, media, count(fudid) from sms where cdr=5 group by token, media order by sum(fsystem) desc, token asc limit 4; +select media, sum(fsystem) from sms where cdr=5 and media > 0 group by media order by sum(fsystem); +select rec_date, token, fcc from sms where cdr=7 and tudid is not null group by fcc, token, rec_date order by fcc desc, rec_date limit 4; +select fcc,fsystem,count(distinct fudid) from sms where cdr=5 and fcc is not null and fsystem is not null group by fcc, fsystem order by count(distinct fudid) desc, fcc limit 8; +select count(distinct tsystem) from sms where token='4616279800098344772'; +select count(distinct token) from sms where cdr=5; +select token, max(UNIX_TIMESTAMP(send_date)), max(UNIX_TIMESTAMP(rec_date)) from sms where cdr=5 or cdr=7 group by token having max(UNIX_TIMESTAMP(send_date)) is not null and max(unix_timestamp(rec_date)) is not null order by token limit 4; +select avg(duration) from (select token, tudid, max(unix_timestamp(rec_date)) - max(unix_timestamp(Send_date)) as duration from SMS where cdr=5 or cdr=7 group by token, tudid having ( max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(Send_date)) is not null) ) as call_time; +select count(distinct udid) from (select token,tudid as udid, max(unix_timestamp(rec_date)), max(unix_timestamp(Send_date)) from sms where cdr=5 or cdr=7 group by token,tudid having ( max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(Send_date)) is not null) ) as call_time; +select MAX(unix_timestamp(send_date))-MIN(unix_timestamp(send_date)) from sms where cdr=5 limit 3; +select token, sum(fsystem) from sms where media=0 and cdr=5 and fudid is not null group by token order by sum(fsystem) desc, token asc limit 6; +select distinct fudid, send_date from sms where cdr=5 and fcc=36 and media=4 and fsystem=1 and loc=1 and token='4616278460378640775'; +select distinct udid from (select token,tudid as udid, max(unix_timestamp(rec_date)), max(unix_timestamp(Send_date)) from sms where cdr=5 or cdr=7 and fcc=966 group by token,tudid having (max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(send_date)) is not null)) as call_time order by udid limit 3; +select send_date,token,fudid,tudid,fsystem,media,loc from sms where cdr=5 and token='4616292794254063246'; +select MAX(date) from sms; +select fcc,fsystem,count( distinct fudid) from sms group by fcc, fsystem order by count(distinct fudid) desc limit 12; +select distinct udid from (select token,tudid as udid, max(unix_timestamp(rec_date)), max(unix_timestamp(Send_date)) from sms where cdr=5 or cdr=7 and fcc=966 group by token,tudid having (max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(send_date)) is not null)) as call_time order by udid limit 3; +select avg(duration) from (select token, tudid, max(unix_timestamp(rec_date)) - max(unix_timestamp(Send_date)) as duration from SMS where cdr=5 or cdr=7 group by token, tudid having ( max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(Send_date)) is not null) ) as call_time; +select avg(duration) from (select token, tudid, max(unix_timestamp(rec_date)) - max(unix_timestamp(Send_date)) as duration from SMS where cdr=5 or cdr=7 group by token, tudid having ( max(unix_timestamp(rec_date)) is not null and max(unix_timestamp(Send_date)) is not null) ) as call_time; +select count(*) from (select distinct minute(date) from sms where date is not null) v; +select count(*) from sms where cdr!=5 and fsystem>12 having count(*) < 0; +select count(*) from sms where group_id is not null; +select token, group_id , fsystem from sms where group_id > 4612132044208109382 and fsystem <>0 and fsystem != 1 group by token,group_id, fsystem order by group_id desc limit 5; +select loc,count(push_only) from sms where push_only is not NULL group by loc; +select count(distinct f) from ( select fcc as f from sms where cdr=5) as q; +select cdr, count(distinct media) from sms group by cdr order by cdr; +select token, group_id from sms where group_id > 4622132044208109382 limit 5; +select * from (select cdr, count(*) c from sms group by cdr) v1 join (select cdr, sum(media) m from sms group by cdr) v2 on (v1.cdr=v2.cdr) where v1.cdr<6; +select mp, v1.cdr FROM (select cdr,min(loc) ml from sms group by cdr) v1 JOIN (select cdr,min(push_only) mp from sms group by cdr) v2 ON v1.ml=v2.mp; +select cdr, count(*) FROM sms WHERE token IN (SELECT token FROM sms GROUP BY token ORDER BY count(*) DESC, token DESC LIMIT 10) GROUP BY cdr ORDER BY cdr; +select sum(fcc) from sms where token = '4616279959343472151' and 1>0; +select count(*) from sms f where 1 >= (if (f.cdr = 5, 1, if (f.cdr = 7, 2, if (f.cdr = 16, 3, 4)))) AND (f.cdr IN (5,7,16)); +SELECT * FROM (SELECT cdr, COUNT(*) c FROM sms GROUP BY cdr) v1 JOIN (SELECT cdr, SUM(media) m FROM sms GROUP BY cdr) v2 ON (v1.cdr = v2.cdr) ORDER BY v1.cdr DESC; +select count(*) from sms where cdr in (select distinct cdr from sms where cdr =5) or cdr =7; +select count(*) from sms where year(date)!=2014; +select /* JD-1509 */ media from sms where media not in (select distinct media from sms where media is null) group by media; +SELECT /* JD-1509 */ media from sms WHERE media not in (select distinct media from sms where media=3 or media is null) GROUP BY media order by media limit 9; +select if(rec_date > now(), now(), rec_date) from sms where rec_date is not null limit 1; +select distinct(case when rec_date > now() then now() else rec_date end) from sms where rec_date is not null limit 3; +SELECT count(*) from sms where date = '2013-06-03 11:00:32'; +SELECT count(*) from sms where date='2013-06-03 11:00:32' or token like '46162798046%'; +SELECT count(*) from sms where date = '2013-06-03 10:07:49' or tudid like '%ffa68%'; +SELECT count(*) from sms where date = '2013-06-03 10:00:50' and token like '4616279815%'; +SELECT count(*) from sms WHERE date is NULL; +SELECT count(*) from sms where date in ('2013-06-03 10:00:00', '2013-06-03 11:00:00', '2013-06-03 12:00:00', '2013-06-03 13:00:00'); +SELECT count(*) from sms where date in ('2013-06-03 11:30:00'); +SELECT count(*) from sms where date in (SELECT date from sms limit 10000); +SELECT count(*) from sms where date in (SELECT send_date from sms where fsystem = 1 limit 1000); +SELECT count(*) from sms where hour(date) > 11 and minute(date) < 50; +SELECT count(*) from sms where year(date) = 2011; +SELECT count(*) from sms where hour(date)=11 and minute(date)=14; +SELECT count(*) from sms where minute(date)>45 and minute(date)<47; +SELECT count(*) from sms where minute(date)>45 or minute(date)<15; +SELECT count(*) from sms where minute(date) in (8, 10, 12); +SELECT count(*) from sms where hour(date)=11 or hour(date) is NULL; +SELECT count(*) from sms where day(date)=3; +SELECT count(*) from sms where hour(date)>12 and minute(date)<41 or hour(date)<11 and minute(date)>28; +SELECT count(*) from sms where hour(rec_date)>12 and minute(date)<41 or hour(rec_date)<11 and minute(date)>28; +SELECT COUNT(*) from sms WHERE '2000-06-01' <= SEND_DATE and SEND_DATE <= '2013-01-03'; +SELECT COUNT(*) from sms WHERE '2000-01-01 17:62' <= SEND_DATE and SEND_DATE <= '2016-03-01 17:22'; +SELECT COUNT(*) from sms WHERE '2000-01-01 17:00' <= SEND_DATE and SEND_DATE <= '2016-03-01 17:22'; +SELECT COUNT(*) from sms WHERE '2012-01-01' <= SEND_DATE and SEND_DATE <= '2013-01-01'; +SELECT COUNT(*) from sms WHERE '2012-01-01' <= SEND_DATE and SEND_DATE <= '2013-01-02'; +SELECT count(*) from sms WHERE '1999-12-31' < SEND_DATE and SEND_DATE <= '2013-12-31'; +SELECT count(*) from sms WHERE '2012-12-31' < SEND_DATE and SEND_DATE <= '2013-12-31 18:18:18.018'; +SELECT count(*) from sms WHERE token='ahikam' and '2000-1-1' < SEND_DATE and SEND_DATE > '1998-1-1'; +SELECT COUNT(*) from sms WHERE '1999' <= SEND_DATE and SEND_DATE <= '2000'; +select COUNT (*) from sms where YEAR(SEND_DATE) IN (1989,2013) and YEAR(SEND_DATE) IN (2000,2001); +select sum(cdr+1) from sms where tsystem>='0' and tsystem<='99'; +select sum (cdr) from sms where send_date>'2013-06-01' and '2014-06-01'>send_date; +select count(*) from sms where (case fudid_p when 'x' then '1' when 'y' then '2' else null end)='1'; +select count(*) from sms where (case fudid_p when '1995f2939214c34fa14e1883a344b462ea46c5ca' then NULL when 'y' then '2' else fudid_p end) = '6fe892140228c41d2179abb4f369b3306509fd2b'; +select count(*) from sms where (case fudid_p when 'x' then fudid_p when 'y' then '2' else '3' end) in ('10','20','3'); +select count(*) from sms where (case fudid_p when '1995f2939214c34fa14e1883a344b462ea46c5ca' then 'x' when 'y' then '2' else fudid_p end) in ('y','x','6fe892140228c41d2179abb4f369b3306509fd2b'); +select count(*) from sms where (case fudid_p when '1995f2939214c34fa14e1883a344b462ea46c5ca' then NULL when 'y' then '2' else fudid_p end) in ('y','x','6fe892140228c41d2179abb4f369b3306509fd2b'); +select count(*) from sms where (case fudid_p when '1995f2939214c34fa14e1883a344b462ea46c5ca' then (case fudid_p when '1995f2939214c34fa14e1883a344b462ea46ccv5ca' then 'ss' when 'y' then '2' else 'x' end) when 'y' then '2' else (case fudid_p when '1995f2' then 'ss' when 'y' then '2' else fudid_p end) end) in ('y','x','6fe892140228c41d2179abb4f369b3306509fd2b'); +select cdr, fcc, sum(loc+1), month (send_date) from sms where cdr NOT IN (5, 7, 16) group by cdr, fcc, month (send_date) having sum (cdr+7)>20 order by cdr, fcc, sum(loc+1) limit 5; +select group_id, group_size, max(fsystem) from sms where group_size+1 > 3 group by group_id, group_size having min(group_id)>-1900 order by group_id, group_size, max(fsystem) limit 8; +SELECT group_id, group_size, MAX(fsystem), substr(token,2) FROM (SELECT group_id, group_size, fsystem, token FROM sms WHERE fsystem > 0 AND group_id BETWEEN 4000000000000 AND 5613555115181858716 AND substr (token,6) <> 'aaa') T WHERE group_size +1 > 3 GROUP BY group_id, group_size, substr(token,2) ORDER BY group_size, 1, 4, MAX(fsystem) DESC limit 6; +SELECT CAST(group_id AS DOUBLE), AVG(CASE WHEN fcc BETWEEN 3 AND 8 THEN tcc WHEN (fcc +3) > 5 THEN tcc +1 ELSE 1 END), tcc -8 FROM sms WHERE group_id*5 > 10 GROUP BY CAST(group_id AS DOUBLE), tcc -8, tcc ORDER BY 1, tcc limit 7; +SELECT CAST(YEAR(send_date) AS INT8), ASIN(fcc +7), NULL, 5, tcc -8, group_size FROM sms WHERE group_size > 20 AND group_size IS NOT NULL GROUP BY CAST(year(send_date) AS INT8), group_size, ASIN(fcc +7), tcc -8 UNION ALL (SELECT CAST(group_size AS INT8), ASIN(fcc +7), NULL, 1, tcc, group_size FROM sms WHERE group_size IS NOT NULL AND group_size NOT IN (5,8,25,6) GROUP BY CAST(group_size AS INT8), ASIN(fcc +7), tcc, group_size) ORDER BY group_size DESC, 1, 2 limit 7; diff --git ql/src/test/queries/clientpositive/mytest.q ql/src/test/queries/clientpositive/mytest.q new file mode 100644 index 0000000..67a8b0f --- /dev/null +++ ql/src/test/queries/clientpositive/mytest.q @@ -0,0 +1,88 @@ +add jar /home/msydoron/eclipse-workspace/JethroDataJDBCDriver/target/jethro-jdbc-3.6-standalone.jar; +CREATE EXTERNAL TABLE ext_mytable1 (x1 INT, y1 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable1", + "hive.sql.dbcp.maxActive" = "1"); + +CREATE EXTERNAL TABLE ext_mytable2 (x2 INT, y2 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable2", + "hive.sql.dbcp.maxActive" = "1"); + + + + + +SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 where (sqrt(x1*y1) = sqrt(x2*y2) and bround (x1) != sqrt (y1)) and + sqrt(x1*x2) = sqrt(y1*y2) and + bround(x1*y1) = bround(x2*y2); + + +--SELECT abs (ext_mytable1.x1), ext_mytable1.y1 FROM ext_mytable1 where bround (x1) +1 = 8; +----SELECT x1,y1 FROM ext_mytable1 limit 3 offset 1; +--SELECT x1, sum(y1*8.0) FROM ext_mytable1 group by x1 order by sum(y1*8); +--SELECT x1 FROM ext_mytable1 order by y1; +--SELECT sum(y1*8.0) FROM ext_mytable1 group by x1 order by sum(y1*8); +-- +--SELECT x1,y1 FROM ext_mytable1 order by y1 limit 3 offset 1; +--SELECT x1 FROM ext_mytable1 order by y1 limit 3; +-- +--select count (*) from ext_mytable2; +-- +--select count (x1) from ext_mytable1; + + + + + + +SELECT count (ext_mytable1.x1) FROM ext_mytable1; + + + +SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 and sqrt(x1*y1) = sqrt(x2*y2) and + sqrt(x1*x2) = sqrt(y1*y2) and + bround(x1*y1) = bround(x2*y2); + + + +select y1,x1,sqrt(x1) from ext_mytable1 where bround(x1) + 1 = sqrt(y1) and x1*y1 = sqrt(y1*x1*y1) and x1+y1 = y1-x1; + +SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +INNER JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 and ext_mytable1.y1=ext_mytable2.y2 and ext_mytable1.x1=10; + + + + +--select count(*) from ext_mytable where x=10 group by x; +-- +--select count(x) from ext_mytable where x!=10; +--select y,x from ext_mytable where x=10; +----select x,count(*) from ext_mytable where x=10; +--select x,y from ext_mytable where bround(x*y)=10; +-- +-- +--select x,y*y from ext_mytable where x*x!=100; +-- +--select x, count(x) from ext_mytable where x!=10 group by x; +-- +----select x, count(*) from ext_mytable where x==10 group by x; +-- + diff --git ql/src/test/queries/clientpositive/mytest_insert.q ql/src/test/queries/clientpositive/mytest_insert.q new file mode 100644 index 0000000..55bfc5b --- /dev/null +++ ql/src/test/queries/clientpositive/mytest_insert.q @@ -0,0 +1,123 @@ +add jar /home/msydoron/eclipse-workspace/JethroDataJDBCDriver/target/jethro-jdbc-3.6-standalone.jar; + + +create table hivetable_1(x1 int, y1 double); + +INSERT INTO hivetable_1 +VALUES +(9,9.0), +(99,99.0), +(999,999.0), +(9999,9999.0), +(99999,99999.0); + +CREATE EXTERNAL TABLE ext_mytable1 (x1 INT, y1 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable1", + "hive.sql.dbcp.maxActive" = "1"); + + + +--insert into ext_mytable1 select * from hivetable_1 where 11 3 ORDER BY ss_sold_date_sk DESC, i_product_name +PREHOOK: type: QUERY +PREHOOK: Input: default@jethro_item +PREHOOK: Input: default@jethro_store_sales +#### A masked pattern was here #### +POSTHOOK: query: SELECT ss_sold_date_sk, i.i_product_name, count(*), sum(ss_sales_price) FROM jethro_store_sales JOIN jethro_item i ON ss_item_sk = i_item_sk WHERE ss_list_price = 9.99 and jethro_store_sales.ss_net_profit < -500 GROUP BY ss_sold_date_sk, i_product_name HAVING sum(ss_sales_price) > 3 ORDER BY ss_sold_date_sk DESC, i_product_name +POSTHOOK: type: QUERY +POSTHOOK: Input: default@jethro_item +POSTHOOK: Input: default@jethro_store_sales +#### A masked pattern was here #### +2451508 eseantieseation 1 3.890000104904175 +2451537 bareingprioughtought 1 5.090000152587891 +2451903 eingeseationbarought 1 3.2899999618530273 +2452525 callyprioughtable 1 4.289999961853027 diff --git ql/src/test/results/clientpositive/mytest.q.out ql/src/test/results/clientpositive/mytest.q.out new file mode 100644 index 0000000..93a22b9 --- /dev/null +++ ql/src/test/results/clientpositive/mytest.q.out @@ -0,0 +1,126 @@ +PREHOOK: query: CREATE EXTERNAL TABLE ext_mytable1 (x1 INT, y1 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable1", + "hive.sql.dbcp.maxActive" = "1") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ext_mytable1 +POSTHOOK: query: CREATE EXTERNAL TABLE ext_mytable1 (x1 INT, y1 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable1", + "hive.sql.dbcp.maxActive" = "1") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ext_mytable1 +PREHOOK: query: CREATE EXTERNAL TABLE ext_mytable2 (x2 INT, y2 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable2", + "hive.sql.dbcp.maxActive" = "1") +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@ext_mytable2 +POSTHOOK: query: CREATE EXTERNAL TABLE ext_mytable2 (x2 INT, y2 DOUBLE) +STORED BY +'org.apache.hive.storage.jdbc.JdbcStorageHandler' +TBLPROPERTIES ( "hive.sql.database.type" = "JETHRO_DATA", + "hive.sql.jdbc.driver" = "com.jethrodata.JethroDriver", + "hive.sql.jdbc.url" = "jdbc:JethroData://10.0.0.221:9111/demo3", + "hive.sql.dbcp.username" = "jethro", + "hive.sql.dbcp.password" = "jethro", + "hive.sql.table" = "mytable2", + "hive.sql.dbcp.maxActive" = "1") +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@ext_mytable2 +PREHOOK: query: SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 where (sqrt(x1*y1) = sqrt(x2*y2) and bround (x1) != sqrt (y1)) and + sqrt(x1*x2) = sqrt(y1*y2) and + bround(x1*y1) = bround(x2*y2) +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_mytable1 +PREHOOK: Input: default@ext_mytable2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 where (sqrt(x1*y1) = sqrt(x2*y2) and bround (x1) != sqrt (y1)) and + sqrt(x1*x2) = sqrt(y1*y2) and + bround(x1*y1) = bround(x2*y2) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_mytable1 +POSTHOOK: Input: default@ext_mytable2 +#### A masked pattern was here #### +10 10.0 10 +20 20.0 20 +200 200.0 200 +PREHOOK: query: SELECT count (ext_mytable1.x1) FROM ext_mytable1 +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_mytable1 +#### A masked pattern was here #### +POSTHOOK: query: SELECT count (ext_mytable1.x1) FROM ext_mytable1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_mytable1 +#### A masked pattern was here #### +3 +PREHOOK: query: SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 and sqrt(x1*y1) = sqrt(x2*y2) and + sqrt(x1*x2) = sqrt(y1*y2) and + bround(x1*y1) = bround(x2*y2) +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_mytable1 +PREHOOK: Input: default@ext_mytable2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 and sqrt(x1*y1) = sqrt(x2*y2) and + sqrt(x1*x2) = sqrt(y1*y2) and + bround(x1*y1) = bround(x2*y2) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_mytable1 +POSTHOOK: Input: default@ext_mytable2 +#### A masked pattern was here #### +10 10.0 10 +20 20.0 20 +200 200.0 200 +PREHOOK: query: select y1,x1,sqrt(x1) from ext_mytable1 where bround(x1) + 1 = sqrt(y1) and x1*y1 = sqrt(y1*x1*y1) and x1+y1 = y1-x1 +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_mytable1 +#### A masked pattern was here #### +POSTHOOK: query: select y1,x1,sqrt(x1) from ext_mytable1 where bround(x1) + 1 = sqrt(y1) and x1*y1 = sqrt(y1*x1*y1) and x1+y1 = y1-x1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_mytable1 +#### A masked pattern was here #### +PREHOOK: query: SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +INNER JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 and ext_mytable1.y1=ext_mytable2.y2 and ext_mytable1.x1=10 +PREHOOK: type: QUERY +PREHOOK: Input: default@ext_mytable1 +PREHOOK: Input: default@ext_mytable2 +#### A masked pattern was here #### +POSTHOOK: query: SELECT ext_mytable1.x1, ext_mytable1.y1, ext_mytable2.x2 +FROM ext_mytable1 +INNER JOIN ext_mytable2 ON ext_mytable1.x1=ext_mytable2.x2 and ext_mytable1.y1=ext_mytable2.y2 and ext_mytable1.x1=10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@ext_mytable1 +POSTHOOK: Input: default@ext_mytable2 +#### A masked pattern was here #### +10 10.0 10