这是我的查询:
select word_id, count(sentence_id)
from sentence_word
group by word_id
having count(sentence_id) > 100;
Run Code Online (Sandbox Code Playgroud)
表语句包含3个字段,wordid,sentenceid和主键id.它有350k +行.这个查询花了85秒钟,我想知道(希望,祈祷?)有一种更快的方法来找到所有超过100个句子的单词.
我已经尝试取出选择计数部分,只是做'有计数(1)',但都没有加快速度.
我很感激您可以借出的任何帮助.谢谢!
我有一个比这里的示例更复杂的查询,但是它只需要返回某个字段在数据集中不会出现多次的行.
ACTIVITY_SK STUDY_ACTIVITY_SK
100 200
101 201
102 200
100 203
Run Code Online (Sandbox Code Playgroud)
在此示例中,我不希望返回任何ACTIVITY_SK100的记录,因为ACTIVITY_SK在数据集中出现两次.
数据是映射表,并且在许多联接中使用,但是这样的多个记录意味着数据质量问题,因此我需要简单地从结果中删除它们,而不是在其他地方导致错误的连接.
SELECT
A.ACTIVITY_SK,
A.STATUS,
B.STUDY_ACTIVITY_SK,
B.NAME,
B.PROJECT
FROM
ACTIVITY A,
PROJECT B
WHERE
A.ACTIVITY_SK = B.STUDY_ACTIVITY_SK
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情:
SELECT
A.ACTIVITY_SK,
A.STATUS,
B.STUDY_ACTIVITY_SK,
B.NAME,
B.PROJECT
FROM
ACTIVITY A,
PROJECT B
WHERE
A.ACTIVITY_SK = B.STUDY_ACTIVITY_SK
WHERE A.ACTIVITY_SK NOT IN
(
SELECT
A.ACTIVITY_SK,
COUNT(*)
FROM
ACTIVITY A,
PROJECT B
WHERE
A.ACTIVITY_SK = B.STUDY_ACTIVITY_SK
GROUP BY A.ACTIVITY_SK
HAVING COUNT(*) > 1
)
Run Code Online (Sandbox Code Playgroud)
但必须有一个较便宜的方式来做到这一点......
我需要显示每个'id'有多少不同的值.
它应该如下所示:
id | component_a | component_b | component_c
--------------------------------------------------
KLS11 | none | one | none
KLS12 | one | one | none
KLS13 | several | one | none
KLS14 | one | one | one
KLS15 | one | several | several
Run Code Online (Sandbox Code Playgroud)
我有下表(table_a):
id | component_a | component_b | component_c
--------------------------------------------------
KLS11 | | a |
KLS12 | a | a |
KLS13 | a | a |
KLS13 | b | a |
KLS14 | a …Run Code Online (Sandbox Code Playgroud) id | mid | pid | owgh | nwgh |
1 3 12 1.5 0.6
2 3 12 1.5 0.3
3 3 14 0.6 0.4
4 3 15 1.2 1.1
5 4 16 1.5 1.0
6 4 17 2.4 1.2
7 3 19 3.0 1.4
Run Code Online (Sandbox Code Playgroud)
从上面我想要 nwgh 的中间和总和的总数及其相应的。id ex: mid=3 或 mid=4 但有 DISTINCT pid 但请注意 nwgh 的总和不应是 DISTINCT
因此,我的结果如下:
mid | countmid | totalnwgh
3 4 (DISTINCT value) 3.8 (no DISTINCT it take both value of pid =12)
4 …Run Code Online (Sandbox Code Playgroud) 我想找到一种有效的方法来过滤RANK() OVERSQL 中的函数。
我有以下查询:
SELECT
base.ITEM_SKU_NBR,
RANK() OVER (ORDER BY SUM(base.NET_SLS_AMT) DESC) AS SLS_rank,
RANK() OVER (ORDER BY COUNT(DISTINCT base.txn_id) DESC) AS txn_rank
FROM
`my_table` base
GROUP BY
1
Run Code Online (Sandbox Code Playgroud)
返回此结果集:
现在我想过滤 is SLS_rank< 10 或txn_rankis < 10 的项目。理想情况下,我想在HAVING子句中执行此操作,如下所示:
SELECT
base.ITEM_SKU_NBR,
RANK() OVER (ORDER BY SUM(base.NET_SLS_AMT) DESC) AS SLS_rank,
RANK() OVER (ORDER BY COUNT(DISTINCT base.txn_id) DESC) AS txn_rank
FROM
`my_table` base
GROUP BY
1
HAVING
SLS_rank < 10 OR txn_rank < 10
Run Code Online (Sandbox Code Playgroud)
但 bigquery …
我有这个表:
create table series(
serie varchar(10),
season varchar(10),
chapter varchar(10),
primary key ( serie, season, chapter)
);
insert into series values ('serie_1', 'season_1', 'Chap_1'),
('serie_1', 'season_1', 'Chap_2'),
('serie_1', 'season_2', 'Chap_1'),
('serie_2', 'season_1', 'Chap_1'),
('serie_2', 'season_2', 'Chap_1'),
('serie_2', 'season_2', 'Chap_2'),
('serie_3', 'season_1', 'Chap_1'),
('serie_3', 'season_2', 'Chap_1');
create table actua(
idActor varchar(10),
serie varchar(10),
season varchar(10),
chapter varchar(10),
salary numeric(6),
foreign key ( serie, season, chapter) references series,
primary key ( idActor, serie, season, chapter)
);
insert into actua values ('A1', 'serie_1', …Run Code Online (Sandbox Code Playgroud) 我试图让这个查询工作,但我得到这个错误:'having子句'中的未知列'zips.city'
`$query = "SELECT
zips.*
FROM
zips
HAVING
zips.city LIKE '%$city%'
AND
zips.stateabbr LIKE '%$state%'
LIMIT 1";
$result = mysql_query($query) or die (mysql_error());`
我的拉链表有一个城市列,所以我不知道问题是什么,我知道我访问数据库,因为我可以运行此查询没有错误:
$zip1query = "SELECT
zips.*
FROM
zips
WHERE
zips.zip = '$zip'
";
任何建议将不胜感激!谢谢!
+----+-------+-------+
| id | style | color |
+----+-------+-------+
| 1 | 1 | red |
| 2 | 1 | blue |
| 3 | 2 | red |
| 4 | 2 | blue |
| 5 | 2 | green |
| 6 | 3 | blue |
+----+-------+-------+
Run Code Online (Sandbox Code Playgroud)
查询:
SELECT style, COUNT(*) as count from t GROUP BY style WITH ROLLUP HAVING count > 1;
Run Code Online (Sandbox Code Playgroud)
产生:
+-------+-------+
| style | count |
+-------+-------+
| 1 | …Run Code Online (Sandbox Code Playgroud) 不太确定如何获得这个。我有一个员工表,我需要找到平均工资。我知道我可以使用use avg()。但是,诀窍是我需要找到拥有5名以上职员的部门的平均值。我不确定是否应使用分组依据或使用方式。谢谢!
CREATE TABLE STAFF (STAFF_ID CHAR(3),
STAFF_NAME CHAR(20),
GENDER CHAR(6),
DEPARTMENT CHAR(20),
BOSS_ID CHAR(3)
SALARY NUMBER(8,2));
Run Code Online (Sandbox Code Playgroud) 我MigratoryBirds在SQL Server表中的数据下面
birdType
1
4
4
4
5
5
5
3
Run Code Online (Sandbox Code Playgroud)
用于创建上表的SQL脚本:
/****** Object: Table [dbo].[migratoryBirds] Script Date: 20-Jul-17 8:01:02 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[migratoryBirds](
[birdType] [int] NULL
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我的目标是获得表中频率最高的鸟类.如果我编写存储过程并可以自由编写多个SQL查询,那么这并不困难,但我正在尝试使用单个SQL查询来实现它.我试图看看HavingSQL服务器的子句是否对我有任何帮助.
所以我写的第一个查询是:
select birdType, count(1) AS [birdCount]
from migratorybirds
group by birdType
Run Code Online (Sandbox Code Playgroud)
它给出了以下输出
birdType birdCount
1 1
3 1
4 3
5 3
Run Code Online (Sandbox Code Playgroud)
由于这是一个聚合的情况,所以我认为Having条款可以帮助我在这里筛选出频率最高的记录3.birdType4和5具有最高频率3.
所以,我增强了我的查询,如下所示:
select birdType, count(1) AS [birdCount] …Run Code Online (Sandbox Code Playgroud)