SQLite 查询根据另一个表的值获取表

2024-01-28

我不确定这里必须有什么标题才能正确反映我的问题,我只能描述我想要的内容。

有一个包含字段的表:

id, name, city

还有接下来的几行:

1 John London
2 Mary Paris
3 John Paris
4 Samy London

我想得到这样的结果:

      London  Paris
Total   2       2
John    1       1
Mary    0       1
Samy    1       0

因此,我需要获取名称的所有唯一值,并为另一个字段(城市)的唯一值找到适当的数量 我还想得到每个城市的总数

简单的方法是:

1)获取唯一名称列表

SELECT DISTINCT name FROM table

2)获取独特城市列表

SELECT DISTINCT city FROM table

3)为每个名称和城市创建一个查询

SELECT COUNT(city) FROM table WHERE name = some_name AND city = some_city

4)获取总计:

SELECT COUNT(city) FROM table WHERE name = some_name

(我没有测试这些查询,所以这里可能有一些错误,但这只是为了展示这个想法)

因为有 3 个名字和 2 个城市 -> 3 * 2 = 6 个数据库查询

但是对于包含 100 个城市和 100 个名称的表 -> 100 * 100 = 10 000 个数据库查询 这可能需要很多时间才能完成。

此外,名称和城市可能会更改,因此,我无法使用预定义的名称或城市创建查询,因为每天都是新的,因此,可能是莫斯科、都灵和柏林,而不是伦敦和巴黎。名字也是一样。

如何使用sqlite对原始表进行一二查询来获取这样的表?

(sqlite:我是为android做的)


您可以通过条件聚合获取每个名称的结果。至于总数,不幸的是 SQLite 不支持with rollup子句,这会自动生成它。

一种解决方法是union all以及用于订购的附加列:

select name, london, paris
from (
    select name, sum(city = 'London') london, sum(city = 'Paris') paris, 1 prio
    from mytable
    group by name
    union all
    select 'Total', sum(city = 'London'), sum(city = 'Paris'), 0
    from mytable
) t
order by prio, name

实际上子查询可能不是必需的:

select name, sum(city = 'London') london, sum(city = 'Paris') paris, 1 prio
from mytable
group by name
union all
select 'Total', sum(city = 'London'), sum(city = 'Paris'), 0
from mytable
order by prio, name
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLite 查询根据另一个表的值获取表 的相关文章

  • 如何让 Entity Framework 6 + Sqlite + 代码优先工作?

    我正在尝试创建一个简单的项目来探索 Entity Framework 6 Code First 与 sqlite db 提供程序如何工作 但是当我完成我的应用程序时 我收到错误 实体框架提供程序类型 System Data SQLite S
  • SQL 中基于下一条记录和上一条记录的复杂排序

    这是一个后续问题根据 SQL 中的下一条记录和上一条记录进行排序 https stackoverflow com questions 30477803 sorting based on next and previous records i
  • 如何在 python 中转储单个 sqlite3 表?

    我只想转储一张表 但从它的外观来看 没有任何参数 我找到了这个转储示例 但它适用于数据库中的所有表 Convert file existing db db to SQL dump file dump sql import sqlite3 o
  • BlackBerry SQLite:将一个 SQLite 数据库连接到另一个

    我正在尝试使用 SQLite 将一个 SQLite 数据库附加到 BlackBerry 上的另一个数据库附加数据库 http www sqlite org lang attach html命令 Database d1 d2 Statemen
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • “库例程调用不按顺序” sqlite3_prepare_v2(CREATE TABLE)

    你知道为什么我打电话时会收到 Library Routine Called Out Of Sequence 吗 sqlite3 prepare v2 CREATE TABLE 在空数据库上 我创建一个空数据库 然后打开它 后来我将所有必须写
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • 条件必须具有 bool 静态类型

    有什么方法可以在这种情况下使用未来的布尔值 或者有更好的方法吗 Widget buildRow String pair final Future
  • st_intersects 与 st_overlaps

    这两个查询有什么区别 select a gid sum length b the geom from polygons as a roads as b where st intersects a the geom b the geom gr
  • 使用 groupby 过滤器后应用 jinja 过滤器

    我有一个字典列表 我想按某个属性进行分组 然后按另一个属性求和 对于变量 foo 这将类似于 foo groupby a sum attribute b 这显然行不通 因为之后groupby 我有一个元组列表 有什么方法可以解压元组然后重新
  • 如何识别拼写不同的相似单词

    我想从数据库中过滤掉重复的客户名称 一位客户可能有多个同名但拼写差异不大的系统条目 这是一个示例 名为 Brook 的客户可能有 3 个系统条目 有了这个变化 布鲁克 贝尔塔 布鲁克 贝尔塔 比鲁克 贝尔塔 假设我们将此名称放入一个数据库列
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • 从 Getdate() 获取时间

    我想采取Getdate 结果 例如 2011 10 05 11 26 55 000 into 11 26 55 AM 我看过其他地方并发现 Select RIGHT CONVERT VARCHAR GETDATE 100 7 这给了我 11
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 如何使用 SQL Server 2008 将行复制到同一个表中

    A 到目前为止我的方式 sqlCommand CommandText INSERT Table1 column1 column2 column3 SELECT column1 column2 column3 FROM Table1 WHER
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et

随机推荐

  • “git pull”和“git fetch”有什么区别?

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 两者有什么区别git pull https git scm com docs git pull and git fetch h
  • 詹金斯权限被拒绝

    我很抱歉来到这里询问这个问题 但我已经阅读了所有互联网试图找到解决方案 但我仍然遇到这个问题 我已经成功安装了 当我还有希望的时候就开始吧 jenkins 以便在我们的持续集成流程中使用它 我尝试从一个简单的例子开始 如下所示 pipeli
  • laravel 从带有实际点的文件夹名称加载视图

    我正在创建一个多域 Laravel 应用程序 因此我的视图文件位于每个域的单独文件夹中 例如 以下内容 return view pages SERVER SERVER NAME public home 应该加载一个视图 pages doma
  • Paypal自适应支付php

    我有这个问题 我已经按照这个教程 gt http www youtube com watch v rzRR1i F VA http www youtube com watch v rzRR1i F VA 设置完所有内容后 我在完成身份验证过
  • 计算 VS_KEY 容器名称

    如何计算 VS KEY 容器名称 它们通常是这样的 VS KEY 71E582524B5DDE29 我假设它是基于计算机名称的 但是如果我们运行的云服务在每次实例重新启动时随机更改计算机名称会怎样 当实例启动时 我们需要知道容器名称 以便我
  • C++ 运行时获取当前操作系统

    我需要弄清楚我的程序在运行时运行的操作系统 我正在使用 Qt 4 6 2 MinGW 和 Eclipse 以及 CDT 我的程序应在 Windows 或 Linux 上运行命令行 QProcess 现在我需要一种开关来根据操作系统运行不同的
  • 在 angularjs 中调用 $window.print() 会导致打印预览显示空白页

    我有一个非常奇怪的问题 当我在 angularjs 中调用 window print 时 我看到的只是左上角的日期 顶部的页面名称 右下角的页码和左下角的网址 然而 页面上没有其他内容 这很奇怪 因为常规页面有很多内容 我想这与我在页面上的
  • 如何使同一个 JSF 复合组件包含多次以拥有自己的 javascript 范围?

    我有一个像这样的 JSF 复合组件
  • 函数 write() 与数字表示法不一致

    考虑以下脚本 list of numbers lt as numeric for i in 1001999498 1002000501 list of numbers lt c list of numbers i write list of
  • 如何将列表写入Excel列?

    我有一个 Python 中的一些值的列表 想使用 openpyxl 将它们写入 Excel 电子表格列 到目前为止我尝试过 在哪里lstStat是需要写入 Excel 列的整数列表 for statN in lstStat for line
  • 简单:获取 Android 中发送的电子邮件的确认

    启动电子邮件意图后 如何确认电子邮件已发送或调用它的活动返回错误 Intent emailIntent new Intent Intent ACTION SEND emailIntent setType png image String s
  • 尝试在Elasticsearch中设置max_gram和min_gram

    我尝试在 Ubuntu 16 04 EC2 服务器上部署 Ruby on Rails 应用程序 但给出了有关 Elasticsearch 上 max gram 和 min gram 之间差异的错误 我还没有任何 Elasticsearch
  • React:将双色滑块拇指设置为具有透明背景的图像

    我制作了一个滑块 左边应该是蓝色 右边是灰色 蓝色也应该比灰色更厚 我有两个问题 如果拇指片具有透明切口 则滑块的蓝色部分不会一直延伸到图像上可见内容的左侧 我希望滑块的边缘是圆形的 尤其是蓝色边缘 我可能不需要灰色 By round ed
  • 按下按钮时触发点击事件

    我正在创建一个将元素移动到右侧的指令 每次单击时 该项目都会移动到右侧 但我希望只要按住按钮 该元素就会移动 directive car function return restrict A link function scope elem
  • Selenium Webdriver - 获取表数据

    我想从 UI 中的表中获取数据 我知道使用 tr 和 td 循环行和列 但我的桌子是这样的 table tbody tr td data td th data th td data td td data td tr tr td data t
  • VS 2015 文件保存时 CPU 使用率较高

    使用 Visual Studio 2015 我注意到 如果我使用所有解决方案的通用项目打开多个解决方案 如果我编辑并保存属于通用项目的一个 cs 文件 则所有 Visual Studio 2015 实例将消耗 CPU 10 15秒 请注意
  • (很多)UIWebView 内存泄漏

    我从其他帖子中看到 UIWebView 存在内存泄漏问题 然而 由于我泄漏的对象数量很多 我不得不怀疑我是否做错了什么 Leaks 报告了关于打开 UIWebView 加载页面和关闭 这是 Facebook 登录页面 的大约 60 次泄漏
  • java进程中提交内存和RSS的区别

    我正在运行一个简单的 java 进程 该进程运行 jetty 其顶部显示 2 9g 的 RAM 使用的JDK版本是1 8 0 112 使用本机内存跟踪 jcmd 显示总提交内存仅为 1 5G 内存 正如 jvisualvm 所报告的 直接缓
  • 添加用户输入的数字并在用户输入“end”时中断的循环

    创建一个不需要参数的函数 该函数要求用户输入一系列大于或等于零的数字 一次一个 用户键入 end 表示不再有数字 该函数计算所有输入值的总和 我应该能够仅使用 while 循环和 if 语句来完成此操作 我遇到的主要问题是我不知道如何做到这
  • SQLite 查询根据另一个表的值获取表

    我不确定这里必须有什么标题才能正确反映我的问题 我只能描述我想要的内容 有一个包含字段的表 id name city 还有接下来的几行 1 John London 2 Mary Paris 3 John Paris 4 Samy Londo