#sql #database #sqlite
#sql #База данных #sqlite
Вопрос:
Я пытаюсь использовать sqlite3 для получения результатов для двух запросов с разными условиями WHERE из одной и той же таблицы. Я могу заставить запросы работать независимо, но не смог их объединить.
Запрос 1:
SELECT COUNT(*) AS 'With Survivors', Day FROM crashes
WHERE Fatalities < Aboard Group BY DIndex
Результаты:
With Survivors Day
0 231 Monday
1 262 Tuesday
2 243 Wednesday
3 271 Thursday
4 255 Friday
5 254 Saturday
6 216 Sunday
Запрос 2:
SELECT Count(*) AS 'Total Crashes', Day FROM crashes GROUP BY DIndex
Результаты:
Total Crashes Day
0 713 Monday
1 796 Tuesday
2 796 Wednesday
3 818 Thursday
4 797 Friday
5 741 Saturday
6 607 Sunday
Я хотел бы объединить их, чтобы я мог получить следующее:
With Survivors Total Crashes Day
0 231 713 Monday
1 262 796 Tuesday
2 243 796 Wednesday
3 271 818 Thursday
4 255 797 Friday
5 254 741 Saturday
6 216 607 Sunday
Я довольно новичок в SQL, поэтому, хотя я пытался искать ответы, я даже не уверен, что ввожу правильный запрос в свою поисковую систему.
Комментарии:
1. какова структура вашей таблицы «сбоев», возможно, вы можете выбрать несколько столбцов, которые хотите вернуть
2. почему бы не объединить эти два запроса. Рассмотрим первый запрос как представление 1, второй как представление 2, а затем объединим столбцы с названием дня. например: скажем,
Select A.'With Survivors', B.'Total Crashes' , A.Day from A join B on Day
где A — запрос 1, B — запрос 2.
Ответ №1:
SQLite поддерживает выражение CASE, поэтому должно сработать что-то вроде этого
SELECT
Sum( Case WHEN Fatalities < Aboard THEN 1 ELSE 0 end ) AS 'With Survivors',
Count(*) AS 'Total Crashes',
Day
FROM crashes
GROUP BY DIndex
Ответ №2:
Возможно, вы могли бы использовать UNION для объединения двух операторов SELECT
SELECT COUNT(*) AS 'With Survivors', Day FROM crashes
WHERE Fatalities < Aboard Group BY DIndex
UNION
SELECT Count(*) AS 'Total Crashes', Day FROM crashes GROUP BY DIndex;
Комментарии:
1. Спасибо, но это не дало мне совсем того, что я искал. В итоге были получены следующие результаты: « С выжившими День 0 216 Воскресенье 1 231 понедельник 2 243 Среда 3 254 Суббота 4 255 Пятница 5 262 Вторник 6 271 Четверг 7 607 Воскресенье 8 713 Понедельник 9 741 Суббота 10 796 Вторник 11 796 Среда 12 797 Пятница 13 818 четверг«